<?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>218693</bug_id>
          
          <creation_ts>2020-11-08 00:17:52 -0800</creation_ts>
          <short_desc>[JSC] Implement WebAssembly.Memory with shared</short_desc>
          <delta_ts>2022-07-01 14:48:19 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=220364</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>219076</dependson>
          <blocked>218943</blocked>
    
    <blocked>218954</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>alecflett</cc>
    
    <cc>annevk</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1705584</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-08 00:17:52 -0800</bug_when>
    <thetext>Key requirement is that WebAssembly.Memory can be shared, plus, it can be grown by any threads.
Interesting thing is that, how to propagate this updated information to the other threads.

For memory itself, we cannot use reallocated memory since while reallocating, the other thread can access the old one.
These old one&apos;s write can be discarded if we cannot copy this content to the new memory.
We should allocate the memory as pages if shared is specified (a.k.a. like, fast memory) and grow it with mprotect.
To make it available, when shared: true is specified, WebAssembly.Memory mandatorily requires &quot;maximum&quot; size. So we can just allocate this pages, and available only initial bytes, and keep the rest unusable.
When growing, we can just call mprotect to make it usable so that we can use grown memory without changing address =&gt; perfect.
Since we only allocates maximum pages, we do not need to have much VA. So, even in iOS, we can use it.

The second problem is that memory address and memory size are cached by WebAssembly.Instance. By using the above technique, we can make address frozen.
But size can be changed in the current mechanism, since this size is used for bound checking right now, plus, this is the active memory size which can be changed by mprotect.
There are two potential answers.

1. Let&apos;s do some dirty hack and propagate the size information *eventually* to the all threads by using VM trap mechanism.
2. Let&apos;s change the size&apos;s meaning of WebAssembly.Instance. We put max VA size here instead of currently available size. Since this includes non-active memory region in bound-checking mode, we will hit signal handler invocation. And then, we use signal handler to emit out-of-memory exception even for bound-checking mode too.

I think (2)&apos;s option is viable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705585</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-08 00:19:12 -0800</bug_when>
    <thetext>For (2), there are two ways to throwing OoB memory access error for bound checking.

1. Simply bound checking is failed =&gt; throwing an error.
2. Bound checking succeeds, but it invokes signal handler since it touches non-active memory =&gt; throwing an error from signal handler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705761</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-11-09 10:33:21 -0800</bug_when>
    <thetext>Does the spec say anything about when the size needs to be updated for other threads?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707136</commentid>
    <comment_count>3</comment_count>
      <attachid>414008</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-13 00:20:52 -0800</bug_when>
    <thetext>Created attachment 414008
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707151</commentid>
    <comment_count>4</comment_count>
      <attachid>414012</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-13 01:26:26 -0800</bug_when>
    <thetext>Created attachment 414012
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707152</commentid>
    <comment_count>5</comment_count>
      <attachid>414013</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-13 01:29:30 -0800</bug_when>
    <thetext>Created attachment 414013
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707437</commentid>
    <comment_count>6</comment_count>
      <attachid>414109</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-13 16:49:03 -0800</bug_when>
    <thetext>Created attachment 414109
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707484</commentid>
    <comment_count>7</comment_count>
      <attachid>414129</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-14 01:45:13 -0800</bug_when>
    <thetext>Created attachment 414129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707573</commentid>
    <comment_count>8</comment_count>
      <attachid>414157</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-14 23:21:47 -0800</bug_when>
    <thetext>Created attachment 414157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707577</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-15 00:18:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/71409442&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708016</commentid>
    <comment_count>10</comment_count>
      <attachid>414283</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-16 15:12:19 -0800</bug_when>
    <thetext>Created attachment 414283
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708039</commentid>
    <comment_count>11</comment_count>
      <attachid>414289</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-16 16:22:19 -0800</bug_when>
    <thetext>Created attachment 414289
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708450</commentid>
    <comment_count>12</comment_count>
      <attachid>414283</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-11-17 17:15:49 -0800</bug_when>
    <thetext>Comment on attachment 414283
Patch

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

Nice!! r=me

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        one thread, and immediately, it should be accessible in the other threads.

there&apos;s a lot of subtlety/detail in &quot;and immediately&quot; in this sentence.

How is this specified in the spec? Understanding the atomic guarantees would be interesting I think.

&gt; Source/JavaScriptCore/ChangeLog:24
&gt; +        &lt;================================================ maximum ============================&gt;&lt;------------ other memory, protected by bounds-checking --...
&gt; +        &lt;======= active ==========&gt;&lt;===================== not active yet =====================&gt;
&gt; +        ^                               [ if we access this, fault handler will detect it]    ^
&gt; +        pointer                                                                               bound checking size

nice! This is a clever and good solution

&gt; Source/JavaScriptCore/ChangeLog:26
&gt; +        These &quot;growable bound-checking memory&quot; is now managed by wasm memory-manager. And fault handler is even if fast memory is disabled.

&quot;And fault handler is even if&quot; =&gt; &quot;And fault handler is used even if&quot;

&gt; Source/WebCore/ChangeLog:13
&gt; +            only when the WebAssembly.Memory is shared mode. And it is only available when we are using it in postMessage.

I commented in the actual code, but does that also mean window.postMessage?

&gt; Source/JavaScriptCore/runtime/Options.cpp:368
&gt;  #if !ENABLE(WEBASSEMBLY_FAST_MEMORY)

maybe this should be renamed to something like ENABLE_WEBASSEMBLY_SIGNALING_MEMORY?

&gt; Source/JavaScriptCore/wasm/WasmFaultSignalHandler.cpp:80
&gt; +            auto doesFaultInWasm = [](void* faultingInstruction) {

doesFaultInWasm =&gt; didFaultInWasm

&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:167
&gt; +    bool isAddressInGrowableMemory(void* address)

same comment on naming, I feel like maybe &quot;isInSignalingMemory&quot; or perhaps &quot;isInGrowableOrFastMemory&quot;?

&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:234
&gt;      Vector&lt;void*&gt; m_fastMemories;

why not just put these in the StdSet below?

&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:280
&gt; +MemoryHandle::MemoryHandle(void* memory, size_t size, size_t mappedCapacity, PageCount initial, PageCount maximum, MemorySharingMode sharingMode, MemoryMode mode)

for non shared, non fast memory, can we assert size == mappedCapacity, since our implementation requires that now

&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:455
&gt; +bool Memory::addressIsInActiveGrowableMemory(void* address)

why not just call these &quot;signaling memories&quot; instead of &quot;growable&quot; memory? Seems like a more descriptive name for what it is

&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:490
&gt; +        bool allocationSuccess = tryAllocate(

I feel like it might be time for a new function since this doesn&apos;t actually allocate anything, and just does bookkeeping

&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:508
&gt; +        WTF::storeStoreFence(); // Ensure storing &quot;size&quot; happens after mprotect is done.

I&apos;m assuming mprotect does a full on memory fence, but I feel like if it didn&apos;t, storeStore isn&apos;t sufficient here. We&apos;d want a full memory fence.

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1294
&gt; +                if (m_context != SerializationContext::WorkerPostMessage) {

what about window post message?

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:3358
&gt; +            Ref&lt;Wasm::Memory&gt; memory = Wasm::Memory::create(handle.releaseNonNull(),
&gt; +                [&amp;vm] (Wasm::Memory::NotifyPressure) { vm.heap.collectAsync(CollectionScope::Full); },
&gt; +                [&amp;vm] (Wasm::Memory::SyncTryToReclaim) { vm.heap.collectSync(CollectionScope::Full); },
&gt; +                [&amp;vm, result] (Wasm::Memory::GrowSuccess, Wasm::PageCount oldPageCount, Wasm::PageCount newPageCount) { result-&gt;growSuccessCallback(vm, oldPageCount, newPageCount); });

This feels like a weird paradigm if we&apos;re just sharing memory. Why would sharing memory ever convince us to GC? Since growing  here is just mprotect.

&gt; JSTests/wasm/stress/shared-wasm-memory-buffer.js:3
&gt; +let pageSize = 64 &lt;&lt; 10;

nit: we don&apos;t have this hard coded somewhere we can import from?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708451</commentid>
    <comment_count>13</comment_count>
      <attachid>414289</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-11-17 17:16:33 -0800</bug_when>
    <thetext>Comment on attachment 414289
Patch

sorry, commented on the old patch. r=me still</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708471</commentid>
    <comment_count>14</comment_count>
      <attachid>414283</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-17 19:33:17 -0800</bug_when>
    <thetext>Comment on attachment 414283
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:10
&gt;&gt; +        one thread, and immediately, it should be accessible in the other threads.
&gt; 
&gt; there&apos;s a lot of subtlety/detail in &quot;and immediately&quot; in this sentence.
&gt; 
&gt; How is this specified in the spec? Understanding the atomic guarantees would be interesting I think.

This is defined as global state is modified.

&gt;&gt; Source/JavaScriptCore/ChangeLog:26
&gt;&gt; +        These &quot;growable bound-checking memory&quot; is now managed by wasm memory-manager. And fault handler is even if fast memory is disabled.
&gt; 
&gt; &quot;And fault handler is even if&quot; =&gt; &quot;And fault handler is used even if&quot;

Fixed.

&gt;&gt; Source/WebCore/ChangeLog:13
&gt;&gt; +            only when the WebAssembly.Memory is shared mode. And it is only available when we are using it in postMessage.
&gt; 
&gt; I commented in the actual code, but does that also mean window.postMessage?

Currently, it is only enabled for worker.postMessage, which is aligned to SharedArrayBuffer implementation right now.
We should look into whether this should be allowed in window.postMessage but for now, we are just using the same semantics to SharedArrayBuffer.

&gt;&gt; Source/JavaScriptCore/runtime/Options.cpp:368
&gt;&gt;  #if !ENABLE(WEBASSEMBLY_FAST_MEMORY)
&gt; 
&gt; maybe this should be renamed to something like ENABLE_WEBASSEMBLY_SIGNALING_MEMORY?

Sounds good. Changed.

&gt;&gt; Source/JavaScriptCore/wasm/WasmFaultSignalHandler.cpp:80
&gt;&gt; +            auto doesFaultInWasm = [](void* faultingInstruction) {
&gt; 
&gt; doesFaultInWasm =&gt; didFaultInWasm

Fixed.

&gt;&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:167
&gt;&gt; +    bool isAddressInGrowableMemory(void* address)
&gt; 
&gt; same comment on naming, I feel like maybe &quot;isInSignalingMemory&quot; or perhaps &quot;isInGrowableOrFastMemory&quot;?

isInGrowableOrFastMemory sounds good. Changed.

&gt;&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:234
&gt;&gt;      Vector&lt;void*&gt; m_fastMemories;
&gt; 
&gt; why not just put these in the StdSet below?

Currently, we are tracking # of fast memories with this vector.
I think this is nice refactoring in a subsequent patch.

&gt;&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:280
&gt;&gt; +MemoryHandle::MemoryHandle(void* memory, size_t size, size_t mappedCapacity, PageCount initial, PageCount maximum, MemorySharingMode sharingMode, MemoryMode mode)
&gt; 
&gt; for non shared, non fast memory, can we assert size == mappedCapacity, since our implementation requires that now

Added.

&gt;&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:455
&gt;&gt; +bool Memory::addressIsInActiveGrowableMemory(void* address)
&gt; 
&gt; why not just call these &quot;signaling memories&quot; instead of &quot;growable&quot; memory? Seems like a more descriptive name for what it is

Because we would like to keep &quot;fast&quot; memory as &quot;fast&quot; memory named. Shared wasm memory is also using bounds-checking so it is not fully signaling one.
Changed it to addressIsInGrowableOrFastMemory

&gt;&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:490
&gt;&gt; +        bool allocationSuccess = tryAllocate(
&gt; 
&gt; I feel like it might be time for a new function since this doesn&apos;t actually allocate anything, and just does bookkeeping

For now, we keep this function since it is also used by an actual allocation function (see fast-memory allocation case).
So, I&apos;ll just keep it untouched in this patch.

&gt;&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:508
&gt;&gt; +        WTF::storeStoreFence(); // Ensure storing &quot;size&quot; happens after mprotect is done.
&gt; 
&gt; I&apos;m assuming mprotect does a full on memory fence, but I feel like if it didn&apos;t, storeStore isn&apos;t sufficient here. We&apos;d want a full memory fence.

OK, removed.

&gt;&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1294
&gt;&gt; +                if (m_context != SerializationContext::WorkerPostMessage) {
&gt; 
&gt; what about window post message?

This is aligned to SharedArrayBuffer for now.

&gt;&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:3358
&gt;&gt; +                [&amp;vm, result] (Wasm::Memory::GrowSuccess, Wasm::PageCount oldPageCount, Wasm::PageCount newPageCount) { result-&gt;growSuccessCallback(vm, oldPageCount, newPageCount); });
&gt; 
&gt; This feels like a weird paradigm if we&apos;re just sharing memory. Why would sharing memory ever convince us to GC? Since growing  here is just mprotect.

We are tracking physical memory usage and if it gets high, it is possible that collecting something will reduce that memory usage. Shared WasmMemory does not invoke sync-reclaim, but still it can call success-callback which can reduce memory pressure.

&gt;&gt; JSTests/wasm/stress/shared-wasm-memory-buffer.js:3
&gt;&gt; +let pageSize = 64 &lt;&lt; 10;
&gt; 
&gt; nit: we don&apos;t have this hard coded somewhere we can import from?

I think there is no constants in JS world, so we need to hardcode in this test.
But the value of this is hardcoded in the wasm spec. So we can just use it here. https://github.com/WebAssembly/design/blob/master/Rationale.md#linear-memory-resizing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708475</commentid>
    <comment_count>15</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-17 19:47:09 -0800</bug_when>
    <thetext>Committed r269940: &lt;https://trac.webkit.org/changeset/269940&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708548</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-11-18 02:53:40 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 219076</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708731</commentid>
    <comment_count>17</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-18 13:05:37 -0800</bug_when>
    <thetext>Relanded in https://trac.webkit.org/changeset/269974/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1880163</commentid>
    <comment_count>18</comment_count>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2022-07-01 14:48:19 -0700</bug_when>
    <thetext>*** Bug 202737 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414008</attachid>
            <date>2020-11-13 00:20:52 -0800</date>
            <delta_ts>2020-11-13 01:26:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218693-20201113002052.patch</filename>
            <type>text/plain</type>
            <size>103485</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YTc3YjFmMDc5MTM3MGUzZTU4YjZmNmM3ODE2ZGFmMzUwOTA2OGU4Li5jNmViOGI1MGViYTMwYjc3
MjVkYzE5NWJiM2IzYzEwN2Q1MmQ2OWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NiBAQAorMjAyMC0xMS0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBXZWJBc3NlbWJseS5NZW1vcnkgd2l0aCBzaGFy
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODY5
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBsbGludC9MTEludFBDUmFuZ2VzLmg6CisgICAgICAgIChKU0M6
OkxMSW50Ojppc1dhc21MTEludFBDKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAgICAgICogcnVu
dGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6b3ZlcnJpZGVEZWZhdWx0cyk6CisgICAg
ICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemUpOgorICAgICAgICAqIHdhc20vV2FzbUFpcklS
R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OkFpcklS
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OnJlc3RvcmVX
ZWJBc3NlbWJseUdsb2JhbFN0YXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0
b3I6OmFkZEN1cnJlbnRNZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRv
cjo6ZW1pdENoZWNrQW5kUHJlcGFyZVBvaW50ZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJ
UkdlbmVyYXRvcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9y
OjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFs
U3RhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVt
b3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6ZW1pdENoZWNrQW5kUHJl
cGFyZVBvaW50ZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRDYWxs
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KToK
KyAgICAgICAgKiB3YXNtL1dhc21CaW5kaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6d2Fz
bVRvV2FzbSk6CisgICAgICAgICogd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6dHJhcEhhbmRsZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjplbmFi
bGVGYXN0TWVtb3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6cHJlcGFyZUZhc3RNZW1vcnkpOgor
ICAgICAgICAqIHdhc20vV2FzbUluc3RhbmNlLmg6CisgICAgICAgIChKU0M6Oldhc206Okluc3Rh
bmNlOjpjYWNoZWRNZW1vcnkgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6
Y2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5z
dGFuY2U6OnVwZGF0ZUNhY2hlZE1lbW9yeSk6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNl
OjpvZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSk6CisgICAgICAgIChKU0M6Oldhc206
Okluc3RhbmNlOjpjYWNoZWRNZW1vcnlTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6V2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogd2FzbS9XYXNtTWVtb3J5LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5
SGFuZGxlOjpNZW1vcnlIYW5kbGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnlIYW5kbGU6
On5NZW1vcnlIYW5kbGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Ok1lbW9yeSk6Cisg
ICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
TWVtb3J5Ojp0cnlDcmVhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmFkZHJlc3NJ
c0luQWN0aXZlR3Jvd2FibGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Omdy
b3dTaGFyZWQpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Omdyb3cpOgorICAgICAgICAo
SlNDOjpXYXNtOjpNZW1vcnk6OmR1bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1v
cnk6On5NZW1vcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmFkZHJl
c3NJc0luQWN0aXZlRmFzdE1lbW9yeSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNtTWVt
b3J5Lmg6CisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6YWRkcmVzc0lzSW5BY3RpdmVHcm93
YWJsZU1lbW9yeSk6CisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6b3BlcmF0b3IgYm9vbCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6bWVtb3J5IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5OjpzaXplIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5OjpzaXplSW5QYWdlcyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6aW5pdGlhbCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6bWF4aW11bSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6bW9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6Oldhc206Ok1lbW9yeTo6Y2hlY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpX
YXNtOjpNZW1vcnk6Om9mZnNldE9mTWVtb3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2Fz
bTo6TWVtb3J5OjpvZmZzZXRPZlNpemUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpN
ZW1vcnk6OmFkZHJlc3NJc0luQWN0aXZlRmFzdE1lbW9yeSk6IERlbGV0ZWQuCisgICAgICAgICog
d2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5u
ZWRSZWdpc3RlckluZm86OmdldCk6CisgICAgICAgIChKU0M6Oldhc206OlBpbm5lZFJlZ2lzdGVy
SW5mbzo6UGlubmVkUmVnaXN0ZXJJbmZvKToKKyAgICAgICAgKiB3YXNtL1dhc21NZW1vcnlJbmZv
cm1hdGlvbi5oOgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OnRvU2F2
ZSBjb25zdCk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5TW9kZS5jcHA6CisgICAgICAgIChK
U0M6Oldhc206Om1ha2VTdHJpbmcpOgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeU1vZGUuaDoK
KyAgICAgICAgKiB3YXNtL2pzL0pTVG9XYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6Y3Jl
YXRlSlNUb1dhc21XcmFwcGVyKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0
YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dHJ5Q3JlYXRl
KToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwOgorICAgICAgICAo
SlNDOjpKU1dlYkFzc2VtYmx5TWVtb3J5OjpidWZmZXIpOgorICAgICAgICAoSlNDOjpKU1dlYkFz
c2VtYmx5TWVtb3J5Ojpncm93U3VjY2Vzc0NhbGxiYWNrKToKKyAgICAgICAgKiB3YXNtL2pzL0pT
V2ViQXNzZW1ibHlNZW1vcnkuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rp
b24uY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUZ1bmN0aW9uOjpqc0NhbGxFbnRyeXBv
aW50U2xvdyk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAg
KiB3YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6
OmV2YWx1YXRlKToKKwogMjAyMC0xMS0xMiAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tv
dkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIFN1cHBvcnQgaW1tIGZv
ciByZWYubnVsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU5NDc1NzFhNTgwMTU5YzFjZmRiN2RiNjc1MGMzNDMy
N2Y5M2Q5YjguLjg2YWM0MGJkYjVjMzBlZTRiNmEyOWM4MWM1NjQxYzllNWJiNWI4NTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMC0xMS0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBXZWJBc3NlbWJseS5NZW1v
cnkgd2l0aCBzaGFyZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxODY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkNsb25lU2VyaWFsaXplcjo6Q2xvbmVTZXJpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
b25lU2VyaWFsaXplcjo6ZHVtcElmVGVybWluYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVE
ZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJp
YWxpemVyOjpDbG9uZURlc2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2Vy
aWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y29tcHV0ZU1lbW9yeUNvc3QgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisKIDIwMjAtMTEtMTIgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gRW5hYmxlIGlu
bGluZSByZXBsYWNlZCBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggMzhhZTZjZTExYTg5YmIyY2E2NTdjNThjZjgyZDdlNDc1MThhOTk1MS4uMDUzM2E4MWZkOTYx
MzdiZTk2MDdjNjdmMjNlMjAzMTljZjQwMTYwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMTA4OCw2ICsxMDg4LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICB3YXNtL1dhc21UaWVyVXBDb3VudC5oCiAKICAgICB3YXNt
L2pzL0pTV2ViQXNzZW1ibHkuaAorICAgIHdhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5oCiAg
ICAgd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGMwZWVmMGJjMzBlMDJjZDg3NmM5MzEyZDcxZWQ2ZTAxMjdkM2U0NTguLmJj
MDNjNzhjYjExODFmZjIyMzlhZTFiMTFkM2Y0NGM4ZWE0ZmQ4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNTc0LDcgKzE1NzQsNyBAQAogCQlBRDAwNjU5RTFFQ0FDODEyMDAw
Q0E5MjYgLyogV2FzbUxpbWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUQwMDY1OUQxRUNBQzdGRTAwMENBOTI2IC8qIFdhc21MaW1pdHMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBRDJGQ0JFMzFE
QjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQTcxREI1OERBNDAwQjNF
NzM2IC8qIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaCAqLzsgfTsKIAkJQUQyRkNCRTUxREI1
OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQTkxREI1OERBNDAwQjNFNzM2IC8q
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oICovOyB9OwotCQlBRDJGQ0JFNzFEQjU4REFEMDBCM0U3
MzYgLyogSlNXZWJBc3NlbWJseU1lbW9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQUIxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1i
bHlNZW1vcnkuaCAqLzsgfTsKKwkJQUQyRkNCRTcxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNz
ZW1ibHlNZW1vcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEFEMkZDQkFCMURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5TWVtb3J5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQUQyRkNCRTkx
REI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkFEMURCNThEQTQwMEIz
RTczNiAvKiBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmggKi87IH07CiAJCUFEMkZDQkVCMURC
NThEQUQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5VGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkFGMURCNThEQTQwMEIzRTczNiAvKiBK
U1dlYkFzc2VtYmx5VGFibGUuaCAqLzsgfTsKIAkJQUQyRkNCRUQxREI1OERBRDAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkIxMURCNThEQTQwMEIzRTczNiAvKiBX
ZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmggKi87IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRQQ1Jhbmdlcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50UENSYW5nZXMuaAppbmRleCA0NGY0ZWY5MTAzZDdlMjE2Mjk1
OWRmYTU2ODJlYTZjYjFiNTI4NzEzLi42NGIyZGU4OTI0ZTg3MWQ5NGZiYWNkYTJmZDEwZDg4Mjdh
YjIwYzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRQQ1Jh
bmdlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFBDUmFuZ2VzLmgK
QEAgLTM1LDYgKzM1LDEwIEBAIG5hbWVzcGFjZSBMTEludCB7CiBleHRlcm4gIkMiIHsKICAgICB2
b2lkIGxsaW50UENSYW5nZVN0YXJ0KCk7CiAgICAgdm9pZCBsbGludFBDUmFuZ2VFbmQoKTsKKyNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgdm9pZCB3YXNtTExJbnRQQ1JhbmdlU3RhcnQoKTsK
KyAgICB2b2lkIHdhc21MTEludFBDUmFuZ2VFbmQoKTsKKyNlbmRpZgogfQogCiBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNMTEludFBDKHZvaWQqIHBjKQpAQCAtNDYsNiArNTAsMTcgQEAgQUxXQVlTX0lO
TElORSBib29sIGlzTExJbnRQQyh2b2lkKiBwYykKICAgICByZXR1cm4gbGxpbnRTdGFydCA8PSBw
Y0FzSW50ICYmIHBjQXNJbnQgPD0gbGxpbnRFbmQ7CiB9CiAKKyNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCitBTFdBWVNfSU5MSU5FIGJvb2wgaXNXYXNtTExJbnRQQyh2b2lkKiBwYykKK3sKKyAgICB1
aW50cHRyX3QgcGNBc0ludCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHBjKTsKKyAgICB1aW50
cHRyX3Qgc3RhcnQgPSB1bnRhZ0NvZGVQdHI8dWludHB0cl90LCBDRnVuY3Rpb25QdHJUYWc+KHdh
c21MTEludFBDUmFuZ2VTdGFydCk7CisgICAgdWludHB0cl90IGVuZCA9IHVudGFnQ29kZVB0cjx1
aW50cHRyX3QsIENGdW5jdGlvblB0clRhZz4od2FzbUxMSW50UENSYW5nZUVuZCk7CisgICAgUkVM
RUFTRV9BU1NFUlQoc3RhcnQgPCBlbmQpOworICAgIHJldHVybiBzdGFydCA8PSBwY0FzSW50ICYm
IHBjQXNJbnQgPD0gZW5kOworfQorI2VuZGlmCisKICNpZiAhRU5BQkxFKENfTE9PUCkKIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIExMSW50UEMgPSBHUFJJbmZvOjpyZWdUNDsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CmluZGV4IDgzZTI0YTA4MjEwYjk1ZWI4NzAwM2JjZWUxNjgzYTA5OGE4ZjQ4NjcuLmJlZDVjZGY1
ZTJhOTM0MjI3NDIxODdkMDMzYmFkZjBmMzVhZTA0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTI0NjcsNyArMjQ2
NywxMiBAQCBtYWNybyB3YXNtU2NvcGUoKQogICAgICMgYnV0IHdlIGRvbid0IHdhbnQgdG8gaW50
ZXJmZXJlIHdpdGggdGhlIExMSW50IG9wY29kZXMKICAgICBpbmNsdWRlIFdlYkFzc2VtYmx5CiBl
bmQKKworZ2xvYmFsIF93YXNtTExJbnRQQ1JhbmdlU3RhcnQKK193YXNtTExJbnRQQ1JhbmdlU3Rh
cnQ6CiB3YXNtU2NvcGUoKQorZ2xvYmFsIF93YXNtTExJbnRQQ1JhbmdlRW5kCitfd2FzbUxMSW50
UENSYW5nZUVuZDoKIAogZWxzZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvV2ViQXNzZW1ibHkuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFz
c2VtYmx5LmFzbQppbmRleCA4YmZmYzhhNjk3ZDJlNmU0ZjIwZGU5NjQwNWE1ZjNkMjRmOGExZWJj
Li5kZjhiYmZhMWQ0NzQwNGI3MDdiN2RjZGZjOWJkM2ZmNmZlMzI5MWFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KQEAgLTQ1LDcgKzQ1LDcgQEAgY29u
c3QgTnVtYmVyT2ZXYXNtQXJndW1lbnRzID0gTnVtYmVyT2ZXYXNtQXJndW1lbnRHUFJzICsgTnVt
YmVyT2ZXYXNtQXJndW1lbnRGUFIKICMgVGhlc2UgbXVzdCBtYXRjaCB0aGUgZGVmaW5pdGlvbiBp
biBXYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCiBjb25zdCB3YXNtSW5zdGFuY2UgPSBjc3IwCiBj
b25zdCBtZW1vcnlCYXNlID0gY3NyMwotY29uc3QgbWVtb3J5U2l6ZSA9IGNzcjQKK2NvbnN0IGJv
dW5kc0NoZWNraW5nU2l6ZSA9IGNzcjQKIAogIyBUaGlzIG11c3QgbWF0Y2ggdGhlIGRlZmluaXRp
b24gaW4gTG93TGV2ZWxJbnRlcnByZXRlci5hc20KIGlmIFg4Nl82NApAQCAtMTg3LDcgKzE4Nyw3
IEBAIGVuZAogIyBXYXNtIHNwZWNpZmljIGhlbHBlcnMKIAogbWFjcm8gcHJlc2VydmVDYWxsZWVT
YXZlc1VzZWRCeVdhc20oKQotICAgICMgTk9URTogV2UgaW50ZW50aW9uYWxseSBkb24ndCBzYXZl
IG1lbW9yeUJhc2UgYW5kIG1lbW9yeVNpemUgaGVyZS4gU2VlIHRoZSBjb21tZW50CisgICAgIyBO
T1RFOiBXZSBpbnRlbnRpb25hbGx5IGRvbid0IHNhdmUgbWVtb3J5QmFzZSBhbmQgYm91bmRzQ2hl
Y2tpbmdTaXplIGhlcmUuIFNlZSB0aGUgY29tbWVudAogICAgICMgaW4gcmVzdG9yZUNhbGxlZVNh
dmVzVXNlZEJ5V2FzbSgpIGJlbG93IGZvciB3aHkuCiAgICAgc3VicCBDYWxsZWVTYXZlU3BhY2VT
dGFja0FsaWduZWQsIHNwCiAgICAgaWYgQVJNNjQgb3IgQVJNNjRFCkBAIC0yMDEsNyArMjAxLDcg
QEAgbWFjcm8gcHJlc2VydmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQogZW5kCiAKIG1hY3JvIHJl
c3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQotICAgICMgTk9URTogV2UgaW50ZW50aW9uYWxs
eSBkb24ndCByZXN0b3JlIG1lbW9yeUJhc2UgYW5kIG1lbW9yeVNpemUgaGVyZS4gVGhlc2UgYXJl
IHNhdmVkCisgICAgIyBOT1RFOiBXZSBpbnRlbnRpb25hbGx5IGRvbid0IHJlc3RvcmUgbWVtb3J5
QmFzZSBhbmQgYm91bmRzQ2hlY2tpbmdTaXplIGhlcmUuIFRoZXNlIGFyZSBzYXZlZAogICAgICMg
YW5kIHJlc3RvcmVkIHdoZW4gZW50ZXJpbmcgV2FzbSBieSB0aGUgSlNUb1dhc20gd3JhcHBlciBh
bmQgY2hhbmdlcyB0byB0aGVtIGFyZSBtZWFudAogICAgICMgdG8gYmUgb2JzZXJ2YWJsZSB3aXRo
aW4gdGhlIHNhbWUgV2FzbSBtb2R1bGUuCiAgICAgaWYgQVJNNjQgb3IgQVJNNjRFCkBAIC0yNDAs
OCArMjQwLDggQEAgZW5kCiAKIG1hY3JvIHJlbG9hZE1lbW9yeVJlZ2lzdGVyc0Zyb21JbnN0YW5j
ZShpbnN0YW5jZSwgc2NyYXRjaDEsIHNjcmF0Y2gyKQogICAgIGxvYWRwIFdhc206Okluc3RhbmNl
OjptX2NhY2hlZE1lbW9yeVtpbnN0YW5jZV0sIG1lbW9yeUJhc2UKLSAgICBsb2FkaSBXYXNtOjpJ
bnN0YW5jZTo6bV9jYWNoZWRNZW1vcnlTaXplW2luc3RhbmNlXSwgbWVtb3J5U2l6ZQotICAgIGNh
Z2VkUHJpbWl0aXZlKG1lbW9yeUJhc2UsIG1lbW9yeVNpemUsIHNjcmF0Y2gxLCBzY3JhdGNoMikK
KyAgICBsb2FkaSBXYXNtOjpJbnN0YW5jZTo6bV9jYWNoZWRCb3VuZHNDaGVja2luZ1NpemVbaW5z
dGFuY2VdLCBib3VuZHNDaGVja2luZ1NpemUKKyAgICBjYWdlZFByaW1pdGl2ZShtZW1vcnlCYXNl
LCBib3VuZHNDaGVja2luZ1NpemUsIHNjcmF0Y2gxLCBzY3JhdGNoMikKIGVuZAogCiBtYWNybyB0
aHJvd0V4Y2VwdGlvbihleGNlcHRpb24pCkBAIC04NTYsNyArODU2LDkgQEAgd2FzbU9wKGNhbGxf
aW5kaXJlY3Rfbm9fdGxzLCBXYXNtQ2FsbEluZGlyZWN0Tm9UbHMsIG1hY3JvKGN0eCkKIGVuZCkK
IAogd2FzbU9wKGN1cnJlbnRfbWVtb3J5LCBXYXNtQ3VycmVudE1lbW9yeSwgbWFjcm8oY3R4KQot
ICAgIGxvYWRwIFdhc206Okluc3RhbmNlOjptX2NhY2hlZE1lbW9yeVNpemVbd2FzbUluc3RhbmNl
XSwgdDAKKyAgICBsb2FkcCBXYXNtOjpJbnN0YW5jZTo6bV9tZW1vcnlbd2FzbUluc3RhbmNlXSwg
dDAKKyAgICBsb2FkcCBXYXNtOjpNZW1vcnk6Om1faGFuZGxlW3QwXSwgdDAKKyAgICBsb2FkcCBX
YXNtOjpNZW1vcnlIYW5kbGU6Om1fc2l6ZVt0MF0sIHQwCiAgICAgdXJzaGlmdHEgMTYsIHQwCiAg
ICAgcmV0dXJucShjdHgsIHQwKQogZW5kKQpAQCAtODc0LDcgKzg3Niw3IEBAIGVuZCkKICMgdXNl
cyBvZmZzZXQgYXMgc2NyYXRjaCBhbmQgcmV0dXJucyByZXN1bHQgb24gcG9pbnRlcgogbWFjcm8g
ZW1pdENoZWNrQW5kUHJlcGFyZVBvaW50ZXIoY3R4LCBwb2ludGVyLCBvZmZzZXQsIHNpemUpCiAg
ICAgbGVhcCBzaXplIC0gMVtwb2ludGVyLCBvZmZzZXRdLCB0NQotICAgIGJwYiB0NSwgbWVtb3J5
U2l6ZSwgLmNvbnRpbnVhdGlvbgorICAgIGJwYiB0NSwgYm91bmRzQ2hlY2tpbmdTaXplLCAuY29u
dGludWF0aW9uCiAgICAgdGhyb3dFeGNlcHRpb24oT3V0T2ZCb3VuZHNNZW1vcnlBY2Nlc3MpCiAu
Y29udGludWF0aW9uOgogICAgIGFkZHAgbWVtb3J5QmFzZSwgcG9pbnRlcgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAppbmRleCA5NTg5ODljOTIzYTRmYWNiZjY1NzVj
ZGRmOWYxMmVkNWVhZTE4ZjI4Li5jMjdiMTU2YjE5YjAwZjQ5YmM2ZTBiOThmMDg0NmFiMDYyMzgw
ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcApAQCAtMzY3
LDYgKzM2Nyw3IEBAIHN0YXRpYyB2b2lkIG92ZXJyaWRlRGVmYXVsdHMoKQogCiAjaWYgIUVOQUJM
RShXRUJBU1NFTUJMWV9GQVNUX01FTU9SWSkKICAgICBPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZh
c3RNZW1vcnkoKSA9IGZhbHNlOworICAgIE9wdGlvbnM6OnVzZVNoYXJlZEFycmF5QnVmZmVyKCkg
PSBmYWxzZTsKICNlbmRpZgogCiAjaWYgIUhBVkUoTUFDSF9FWENFUFRJT05TKQpAQCAtNjU5LDEz
ICs2NjAsMTQgQEAgdm9pZCBPcHRpb25zOjppbml0aWFsaXplKCkKICNlbmRpZgogCiAjaWYgQVNB
Tl9FTkFCTEVEICYmIE9TKExJTlVYKSAmJiBFTkFCTEUoV0VCQVNTRU1CTFlfRkFTVF9NRU1PUlkp
Ci0gICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCkpIHsK
KyAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RNZW1vcnkoKSB8fCBP
cHRpb25zOjp1c2VTaGFyZWRBcnJheUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogYXNhbk9wdGlvbnMgPSBnZXRlbnYoIkFTQU5fT1BUSU9OUyIpOwogICAgICAgICAgICAg
ICAgIGJvb2wgb2tUb1VzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSA9IGFzYW5PcHRpb25zCiAgICAg
ICAgICAgICAgICAgICAgICYmIChzdHJzdHIoYXNhbk9wdGlvbnMsICJhbGxvd191c2VyX3NlZ3Zf
aGFuZGxlcj0xIikgfHwgc3Ryc3RyKGFzYW5PcHRpb25zLCAiaGFuZGxlX3NlZ3Y9MCIpKTsKICAg
ICAgICAgICAgICAgICBpZiAoIW9rVG9Vc2VXZWJBc3NlbWJseUZhc3RNZW1vcnkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJXQVJOSU5HOiBBU0FOIGludGVyZmVyZXMgd2l0aCBK
U0Mgc2lnbmFsIGhhbmRsZXJzOyB1c2VXZWJBc3NlbWJseUZhc3RNZW1vcnkgd2lsbCBiZSBkaXNh
YmxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJXQVJOSU5HOiBBU0FOIGlu
dGVyZmVyZXMgd2l0aCBKU0Mgc2lnbmFsIGhhbmRsZXJzOyB1c2VXZWJBc3NlbWJseUZhc3RNZW1v
cnkgYW5kIHVzZVNoYXJlZEFycmF5QnVmZmVyIHdpbGwgYmUgZGlzYWJsZWQuIik7CiAgICAgICAg
ICAgICAgICAgICAgIE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgIE9wdGlvbnM6OnVzZVNoYXJlZEFycmF5QnVmZmVyKCkgPSBm
YWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDQz
ZDBjODcyZWU0YzYzYjRkNTZiNmYwZTM0NjIzNTMzM2U4NGI3OTMuLmYwMzdkYTEzMzlkMzdjMmJi
YWUzYTllYjhjZjMwNjU0ZjEyMjIzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcApAQCAtNjgwLDcgKzY4MCw3IEBAIGNsYXNzIEFp
cklSR2VuZXJhdG9yIHsKICAgICBWZWN0b3I8VHlwZWRUbXA+IG1fbG9jYWxzOwogICAgIFZlY3Rv
cjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgbV91bmxpbmtlZFdhc21Ub1dhc21DYWxsczsgLy8g
TGlzdCBlYWNoIGNhbGwgc2l0ZSBhbmQgdGhlIGZ1bmN0aW9uIGluZGV4IHdob3NlIGFkZHJlc3Mg
aXQgc2hvdWxkIGJlIHBhdGNoZWQgd2l0aC4KICAgICBHUFJSZWcgbV9tZW1vcnlCYXNlR1BSIHsg
SW52YWxpZEdQUlJlZyB9OwotICAgIEdQUlJlZyBtX21lbW9yeVNpemVHUFIgeyBJbnZhbGlkR1BS
UmVnIH07CisgICAgR1BSUmVnIG1fYm91bmRzQ2hlY2tpbmdTaXplR1BSIHsgSW52YWxpZEdQUlJl
ZyB9OwogICAgIEdQUlJlZyBtX3dhc21Db250ZXh0SW5zdGFuY2VHUFIgeyBJbnZhbGlkR1BSUmVn
IH07CiAgICAgYm9vbCBtX21ha2VzQ2FsbHMgeyBmYWxzZSB9OwogCkBAIC03NzIsOCArNzcyLDgg
QEAgQWlySVJHZW5lcmF0b3I6OkFpcklSR2VuZXJhdG9yKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9u
JiBpbmZvLCBCMzo6UHJvY2VkdXJlJiBwcm8KICAgICAgICAgbV9jb2RlLnBpblJlZ2lzdGVyKG1f
d2FzbUNvbnRleHRJbnN0YW5jZUdQUik7CiAKICAgICBpZiAobW9kZSAhPSBNZW1vcnlNb2RlOjpT
aWduYWxpbmcpIHsKLSAgICAgICAgbV9tZW1vcnlTaXplR1BSID0gcGlubmVkUmVncy5zaXplUmVn
aXN0ZXI7Ci0gICAgICAgIG1fY29kZS5waW5SZWdpc3RlcihtX21lbW9yeVNpemVHUFIpOworICAg
ICAgICBtX2JvdW5kc0NoZWNraW5nU2l6ZUdQUiA9IHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdT
aXplUmVnaXN0ZXI7CisgICAgICAgIG1fY29kZS5waW5SZWdpc3RlcihtX2JvdW5kc0NoZWNraW5n
U2l6ZUdQUik7CiAgICAgfQogCiAgICAgbV9jb2RlLnNldE51bUVudHJ5cG9pbnRzKDEpOwpAQCAt
OTE4LDcgKzkxOCw3IEBAIHZvaWQgQWlySVJHZW5lcmF0b3I6OnJlc3RvcmVXZWJBc3NlbWJseUds
b2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0IHJlc3RvCiAgICAgICAgIGNvbnN0IFBp
bm5lZFJlZ2lzdGVySW5mbyogcGlubmVkUmVncyA9ICZQaW5uZWRSZWdpc3RlckluZm86OmdldCgp
OwogICAgICAgICBSZWdpc3RlclNldCBjbG9iYmVyczsKICAgICAgICAgY2xvYmJlcnMuc2V0KHBp
bm5lZFJlZ3MtPmJhc2VNZW1vcnlQb2ludGVyKTsKLSAgICAgICAgY2xvYmJlcnMuc2V0KHBpbm5l
ZFJlZ3MtPnNpemVSZWdpc3Rlcik7CisgICAgICAgIGNsb2JiZXJzLnNldChwaW5uZWRSZWdzLT5i
b3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7CiAgICAgICAgIGlmICghaXNBUk02NCgpKQogICAg
ICAgICAgICAgY2xvYmJlcnMuc2V0KFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMo
KSk7CiAKQEAgLTkzMywxMiArOTMzLDEyIEBAIHZvaWQgQWlySVJHZW5lcmF0b3I6OnJlc3RvcmVX
ZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0IHJlc3RvCiAgICAg
ICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbcGlubmVkUmVnc10gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAg
ICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsK
ICAgICAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy0+YmFzZU1lbW9yeVBv
aW50ZXI7Ci0gICAgICAgICAgICBHUFJSZWcgc2NyYXRjaE9yU2l6ZSA9IEdpZ2FjYWdlOjppc0Vu
YWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogcGlubmVk
UmVncy0+c2l6ZVJlZ2lzdGVyOworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hPckJvdW5kc0No
ZWNraW5nU2l6ZSA9IEdpZ2FjYWdlOjppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyBw
YXJhbXMuZ3BTY3JhdGNoKDApIDogcGlubmVkUmVncy0+Ym91bmRzQ2hlY2tpbmdTaXplUmVnaXN0
ZXI7CiAKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJh
bXNbMF0uZ3ByKCksIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBpbm5l
ZFJlZ3MtPnNpemVSZWdpc3Rlcik7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MocGFyYW1zWzBdLmdwcigpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3Vu
ZHNDaGVja2luZ1NpemUoKSksIHBpbm5lZFJlZ3MtPmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVy
KTsKICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNb
MF0uZ3ByKCksIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7
CiAKLSAgICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZl
LCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLT5zaXplUmVnaXN0ZXIsIHNjcmF0Y2hPclNpemUpOwor
ICAgICAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJh
c2VNZW1vcnksIHBpbm5lZFJlZ3MtPmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyLCBzY3JhdGNo
T3JCb3VuZHNDaGVja2luZ1NpemUpOwogICAgICAgICB9KTsKIAogICAgICAgICBlbWl0UGF0Y2hw
b2ludChibG9jaywgcGF0Y2hwb2ludCwgVG1wKCksIGluc3RhbmNlKTsKQEAgLTExNjgsOCArMTE2
OCwxMiBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KEV4cHJlc3Npb25U
eXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKICAgICBhdXRvIHRlbXAxID0gZzY0KCk7CiAg
ICAgYXV0byB0ZW1wMiA9IGc2NCgpOwogCi0gICAgUkVMRUFTRV9BU1NFUlQoQXJnOjppc1ZhbGlk
QWRkckZvcm0oSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpLCBCMzo6V2lkdGg2
NCkpOwotICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoaW5zdGFuY2VWYWx1ZSgpLCBJbnN0YW5j
ZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCB0ZW1wMSk7CisgICAgUkVMRUFTRV9BU1NF
UlQoQXJnOjppc1ZhbGlkQWRkckZvcm0oSW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCksIEIzOjpX
aWR0aDY0KSk7CisgICAgUkVMRUFTRV9BU1NFUlQoQXJnOjppc1ZhbGlkQWRkckZvcm0oTWVtb3J5
OjpvZmZzZXRPZkhhbmRsZSgpLCBCMzo6V2lkdGg2NCkpOworICAgIFJFTEVBU0VfQVNTRVJUKEFy
Zzo6aXNWYWxpZEFkZHJGb3JtKE1lbW9yeUhhbmRsZTo6b2Zmc2V0T2ZTaXplKCksIEIzOjpXaWR0
aDY0KSk7CisgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcihpbnN0YW5jZVZhbHVlKCksIEluc3Rh
bmNlOjpvZmZzZXRPZk1lbW9yeSgpKSwgdGVtcDEpOworICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFk
ZHIodGVtcDEsIE1lbW9yeTo6b2Zmc2V0T2ZIYW5kbGUoKSksIHRlbXAxKTsKKyAgICBhcHBlbmQo
TW92ZSwgQXJnOjphZGRyKHRlbXAxLCBNZW1vcnlIYW5kbGU6Om9mZnNldE9mU2l6ZSgpKSwgdGVt
cDEpOwogICAgIGNvbnN0ZXhwciB1aW50MzJfdCBzaGlmdFZhbHVlID0gMTY7CiAgICAgc3RhdGlj
X2Fzc2VydChQYWdlQ291bnQ6OnBhZ2VTaXplID09IDF1bGwgPDwgc2hpZnRWYWx1ZSwgIlRoaXMg
bXVzdCBob2xkIGZvciB0aGUgY29kZSBiZWxvdyB0byBiZSBjb3JyZWN0LiIpOwogICAgIGFwcGVu
ZChNb3ZlLCBBcmc6OmltbSgxNiksIHRlbXAyKTsKQEAgLTEzNjMsMTUgKzEzNjcsMTYgQEAgaW5s
aW5lIEFpcklSR2VuZXJhdG9yOjpFeHByZXNzaW9uVHlwZSBBaXJJUkdlbmVyYXRvcjo6ZW1pdENo
ZWNrQW5kUHJlcGFyZVBvaW50ZXIKIAogICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgY2FzZSBN
ZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZzogewotICAgICAgICAvLyBXZSdyZSBub3QgdXNpbmcg
c2lnbmFsIGhhbmRsaW5nIGF0IGFsbCwgd2UgbXVzdCB0aGVyZWZvcmUgY2hlY2sgdGhhdCBubyBt
ZW1vcnkgYWNjZXNzIGV4Y2VlZHMgdGhlIGN1cnJlbnQgbWVtb3J5IHNpemUuCi0gICAgICAgIEFT
U0VSVChtX21lbW9yeVNpemVHUFIpOworICAgICAgICAvLyBJbiBib3VuZCBjaGVja2luZyBtb2Rl
LCB3aGlsZSBzaGFyZWQgd2FzbSBtZW1vcnkgcGFydGlhbGx5IHJlbGllcyBvbiBzaWduYWwgaGFu
ZGxlciB0b28sIHdlIG5lZWQgdG8gcGVyZm9ybSBib3VuZCBjaGVja2luZworICAgICAgICAvLyB0
byBlbnN1cmUgdGhhdCBubyBtZW1vcnkgYWNjZXNzIGV4Y2VlZHMgdGhlIGN1cnJlbnQgbWVtb3J5
IHNpemUuCisgICAgICAgIEFTU0VSVChtX2JvdW5kc0NoZWNraW5nU2l6ZUdQUik7CiAgICAgICAg
IEFTU0VSVChzaXplT2ZPcGVyYXRpb24gKyBvZmZzZXQgPiBvZmZzZXQpOwogICAgICAgICBhdXRv
IHRlbXAgPSBnNjQoKTsKICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YmlnSW1tKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihzaXplT2ZPcGVyYXRpb24pICsgb2Zmc2V0IC0gMSksIHRlbXApOwogICAg
ICAgICBhcHBlbmQoQWRkNjQsIHJlc3VsdCwgdGVtcCk7CiAKICAgICAgICAgZW1pdENoZWNrKFsm
XSB7Ci0gICAgICAgICAgICByZXR1cm4gSW5zdChCcmFuY2g2NCwgbnVsbHB0ciwgQXJnOjpyZWxD
b25kKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwpLCB0ZW1wLCBUbXAobV9tZW1vcnlTaXpl
R1BSKSk7CisgICAgICAgICAgICByZXR1cm4gSW5zdChCcmFuY2g2NCwgbnVsbHB0ciwgQXJnOjpy
ZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwpLCB0ZW1wLCBUbXAobV9ib3VuZHND
aGVja2luZ1NpemVHUFIpKTsKICAgICAgICAgfSwgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgIHRoaXMtPmVt
aXRUaHJvd0V4Y2VwdGlvbihqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzTWVtb3J5QWNj
ZXNzKTsKICAgICAgICAgfSk7CkBAIC0yMTU0LDcgKzIxNTksNyBAQCBhdXRvIEFpcklSR2VuZXJh
dG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2ln
bmF0dXJlLAogICAgICAgICBhdXRvKiBwYXRjaHBvaW50ID0gZW1pdENhbGxQYXRjaHBvaW50KG1f
Y3VycmVudEJsb2NrLCBzaWduYXR1cmUsIHJlc3VsdHMsIGFyZ3MpOwogICAgICAgICAvLyBXZSBu
ZWVkIHRvIGNsb2JiZXIgdGhlIHNpemUgcmVnaXN0ZXIgc2luY2UgdGhlIExMSW50IGFsd2F5cyBi
b3VuZHMgY2hlY2tzCiAgICAgICAgIGlmIChtX21vZGUgPT0gTWVtb3J5TW9kZTo6U2lnbmFsaW5n
KQotICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXQgeyBQaW5u
ZWRSZWdpc3RlckluZm86OmdldCgpLnNpemVSZWdpc3RlciB9KTsKKyAgICAgICAgICAgIHBhdGNo
cG9pbnQtPmNsb2JiZXJMYXRlKFJlZ2lzdGVyU2V0IHsgUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQo
KS5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciB9KTsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKFt1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgZnVuY3Rpb25JbmRleF0gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OwogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQudGhyZWFkU2FmZVBh
dGNoYWJsZU5lYXJDYWxsKCk7CkBAIC0yMjc4LDEzICsyMjgzLDEzIEBAIGF1dG8gQWlySVJHZW5l
cmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1
cmUmIHNpZ25hCiAgICAgICAgICAgICBqaXQuc3RvcmVXYXNtQ29udGV4dEluc3RhbmNlKG5ld0Nv
bnRleHRJbnN0YW5jZSk7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQg
bW9yZSB0aGFuIG9uZSBtZW1vcnkgc2l6ZSByZWdpc3RlcgogICAgICAgICAgICAgLy8gICBzZWU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKLSAgICAgICAg
ICAgIEFTU0VSVChwaW5uZWRSZWdzLnNpemVSZWdpc3RlciAhPSBuZXdDb250ZXh0SW5zdGFuY2Up
OwotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hPclNpemUgPSBHaWdhY2FnZTo6aXNFbmFibGVk
KEdpZ2FjYWdlOjpQcmltaXRpdmUpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IHBpbm5lZFJlZ3Mu
c2l6ZVJlZ2lzdGVyOworICAgICAgICAgICAgQVNTRVJUKHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tp
bmdTaXplUmVnaXN0ZXIgIT0gbmV3Q29udGV4dEluc3RhbmNlKTsKKyAgICAgICAgICAgIEdQUlJl
ZyBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2Fj
YWdlOjpQcmltaXRpdmUpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IHBpbm5lZFJlZ3MuYm91bmRz
Q2hlY2tpbmdTaXplUmVnaXN0ZXI7CiAKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hl
ZE1lbW9yeVNpemUoKSksIHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyKTsgLy8gTWVtb3J5IHNpemUu
CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobmV3Q29udGV4
dEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSks
IHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIpOyAvLyBCb3VuZCBjaGVja2lu
ZyBzaXplLgogICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG5l
d0NvbnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5KCkpLCBiYXNl
TWVtb3J5KTsgLy8gTWVtb3J5Ojp2b2lkKi4KIAotICAgICAgICAgICAgaml0LmNhZ2VDb25kaXRp
b25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJlZ3Muc2l6ZVJl
Z2lzdGVyLCBzY3JhdGNoT3JTaXplKTsKKyAgICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxs
eShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNr
aW5nU2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOwogICAgICAgICB9
KTsKIAogICAgICAgICBlbWl0UGF0Y2hwb2ludChkb0NvbnRleHRTd2l0Y2gsIHBhdGNocG9pbnQs
IFRtcCgpLCBuZXdDb250ZXh0SW5zdGFuY2UsIGluc3RhbmNlVmFsdWUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMzBiM2M3
NzIzMmYyZGVlNWY0NTkzYTRiYzg5OTU2NTdmMTM5OGRmYi4uOTZmM2FhY2Y5NmI0MjIwMTE4ZWJj
ZmU4ZTFjMTg1YzJkN2YzZWNlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMzI1LDcgKzMyNSw3IEBAIGNsYXNzIEIzSVJHZW5l
cmF0b3IgewogICAgIEluc2VydGlvblNldCBtX2NvbnN0YW50SW5zZXJ0aW9uVmFsdWVzOwogICAg
IFZhbHVlKiBtX2ZyYW1lUG9pbnRlciB7IG51bGxwdHIgfTsKICAgICBHUFJSZWcgbV9tZW1vcnlC
YXNlR1BSIHsgSW52YWxpZEdQUlJlZyB9OwotICAgIEdQUlJlZyBtX21lbW9yeVNpemVHUFIgeyBJ
bnZhbGlkR1BSUmVnIH07CisgICAgR1BSUmVnIG1fYm91bmRzQ2hlY2tpbmdTaXplR1BSIHsgSW52
YWxpZEdQUlJlZyB9OwogICAgIEdQUlJlZyBtX3dhc21Db250ZXh0SW5zdGFuY2VHUFIgeyBJbnZh
bGlkR1BSUmVnIH07CiAgICAgYm9vbCBtX21ha2VzQ2FsbHMgeyBmYWxzZSB9OwogCkBAIC00MDgs
OCArNDA4LDggQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihjb25zdCBNb2R1bGVJbmZv
cm1hdGlvbiYgaW5mbywgUHJvY2VkdXJlJiBwcm9jZWR1cmUKICAgICAgICAgbV9wcm9jLnBpblJl
Z2lzdGVyKG1fd2FzbUNvbnRleHRJbnN0YW5jZUdQUik7CiAKICAgICBpZiAobW9kZSAhPSBNZW1v
cnlNb2RlOjpTaWduYWxpbmcpIHsKLSAgICAgICAgbV9tZW1vcnlTaXplR1BSID0gcGlubmVkUmVn
cy5zaXplUmVnaXN0ZXI7Ci0gICAgICAgIG1fcHJvYy5waW5SZWdpc3RlcihtX21lbW9yeVNpemVH
UFIpOworICAgICAgICBtX2JvdW5kc0NoZWNraW5nU2l6ZUdQUiA9IHBpbm5lZFJlZ3MuYm91bmRz
Q2hlY2tpbmdTaXplUmVnaXN0ZXI7CisgICAgICAgIG1fcHJvYy5waW5SZWdpc3RlcihtX2JvdW5k
c0NoZWNraW5nU2l6ZUdQUik7CiAgICAgfQogCiAgICAgaWYgKGluZm8ubWVtb3J5KSB7CkBAIC00
MTcsNyArNDE3LDcgQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihjb25zdCBNb2R1bGVJ
bmZvcm1hdGlvbiYgaW5mbywgUHJvY2VkdXJlJiBwcm9jZWR1cmUKICAgICAgICAgICAgIEFsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAg
IHN3aXRjaCAobV9tb2RlKSB7CiAgICAgICAgICAgICBjYXNlIE1lbW9yeU1vZGU6OkJvdW5kc0No
ZWNraW5nOgotICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocGlubmVkR1BSLCBtX21lbW9y
eVNpemVHUFIgPT0gcGlubmVkR1BSKTsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHBp
bm5lZEdQUiwgbV9ib3VuZHNDaGVja2luZ1NpemVHUFIgPT0gcGlubmVkR1BSKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgTWVtb3J5TW9kZTo6U2lnbmFsaW5nOgog
ICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocGlubmVkR1BSLCBJbnZhbGlkR1BSUmVnID09
IHBpbm5lZEdQUik7CkBAIC01NDUsNyArNTQ1LDcgQEAgdm9pZCBCM0lSR2VuZXJhdG9yOjpyZXN0
b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVkU3RhY2tMaW1pdCByZXN0b3IK
ICAgICAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvKiBwaW5uZWRSZWdzID0gJlBpbm5lZFJl
Z2lzdGVySW5mbzo6Z2V0KCk7CiAgICAgICAgIFJlZ2lzdGVyU2V0IGNsb2JiZXJzOwogICAgICAg
ICBjbG9iYmVycy5zZXQocGlubmVkUmVncy0+YmFzZU1lbW9yeVBvaW50ZXIpOwotICAgICAgICBj
bG9iYmVycy5zZXQocGlubmVkUmVncy0+c2l6ZVJlZ2lzdGVyKTsKKyAgICAgICAgY2xvYmJlcnMu
c2V0KHBpbm5lZFJlZ3MtPmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsKICAgICAgICAgaWYg
KCFpc0FSTTY0KCkpCiAgICAgICAgICAgICBjbG9iYmVycy5zZXQoUmVnaXN0ZXJTZXQ6Om1hY3Jv
U2NyYXRjaFJlZ2lzdGVycygpKTsKIApAQCAtNTYxLDEyICs1NjEsMTIgQEAgdm9pZCBCM0lSR2Vu
ZXJhdG9yOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVkU3RhY2tM
aW1pdCByZXN0b3IKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFtwaW5uZWRSZWdz
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgewogICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFs
bG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRS
ZWdzLT5iYXNlTWVtb3J5UG9pbnRlcjsKLSAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoT3JTaXpl
ID0gR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IHBhcmFtcy5ncFNj
cmF0Y2goMCkgOiBwaW5uZWRSZWdzLT5zaXplUmVnaXN0ZXI7CisgICAgICAgICAgICBHUFJSZWcg
c2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplID0gR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2Fn
ZTo6UHJpbWl0aXZlKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBwaW5uZWRSZWdzLT5ib3VuZHND
aGVja2luZ1NpemVSZWdpc3RlcjsKIAotICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHBhcmFtc1swXS5ncHIoKSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVt
b3J5U2l6ZSgpKSwgcGlubmVkUmVncy0+c2l6ZVJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCksIEluc3RhbmNlOjpv
ZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpKSwgcGlubmVkUmVncy0+Ym91bmRzQ2hl
Y2tpbmdTaXplUmVnaXN0ZXIpOwogICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHBhcmFtc1swXS5ncHIoKSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5
KCkpLCBiYXNlTWVtb3J5KTsKIAotICAgICAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdp
Z2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJlZ3MtPnNpemVSZWdpc3Rlciwg
c2NyYXRjaE9yU2l6ZSk7CisgICAgICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNh
Z2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgcGlubmVkUmVncy0+Ym91bmRzQ2hlY2tpbmdTaXpl
UmVnaXN0ZXIsIHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSk7CiAgICAgICAgIH0pOwogICAg
IH0KIH0KQEAgLTc5Myw3ICs3OTMsOSBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1v
cnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiBhdXRvIEIz
SVJHZW5lcmF0b3I6OmFkZEN1cnJlbnRNZW1vcnkoRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4g
UGFydGlhbFJlc3VsdAogewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKHN0YXRp
Y19jYXN0PE1lbW9yeSo+KG51bGxwdHIpLT5zaXplKCkpKSA9PSBzaXplb2YodWludDY0X3QpLCAi
Y29kZWdlbiByZWxpZXMgb24gdGhpcyBzaXplIik7Ci0gICAgVmFsdWUqIHNpemUgPSBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDY0LCBvcmln
aW4oKSwgaW5zdGFuY2VWYWx1ZSgpLCBzYWZlQ2FzdDxpbnQzMl90PihJbnN0YW5jZTo6b2Zmc2V0
T2ZDYWNoZWRNZW1vcnlTaXplKCkpKTsKKyAgICBWYWx1ZSogbWVtb3J5ID0gbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQ2NCwgb3JpZ2luKCks
IGluc3RhbmNlVmFsdWUoKSwgc2FmZUNhc3Q8aW50MzJfdD4oSW5zdGFuY2U6Om9mZnNldE9mTWVt
b3J5KCkpKTsKKyAgICBWYWx1ZSogaGFuZGxlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQ2NCwgb3JpZ2luKCksIG1lbW9yeSwgc2FmZUNh
c3Q8aW50MzJfdD4oTWVtb3J5OjpvZmZzZXRPZkhhbmRsZSgpKSk7CisgICAgVmFsdWUqIHNpemUg
PSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIElu
dDY0LCBvcmlnaW4oKSwgaGFuZGxlLCBzYWZlQ2FzdDxpbnQzMl90PihNZW1vcnlIYW5kbGU6Om9m
ZnNldE9mU2l6ZSgpKSk7CiAKICAgICBjb25zdGV4cHIgdWludDMyX3Qgc2hpZnRWYWx1ZSA9IDE2
OwogICAgIHN0YXRpY19hc3NlcnQoUGFnZUNvdW50OjpwYWdlU2l6ZSA9PSAxdWxsIDw8IHNoaWZ0
VmFsdWUsICJUaGlzIG11c3QgaG9sZCBmb3IgdGhlIGNvZGUgYmVsb3cgdG8gYmUgY29ycmVjdC4i
KTsKQEAgLTk1NCw5ICs5NTYsOSBAQCBpbmxpbmUgVmFsdWUqIEIzSVJHZW5lcmF0b3I6OmVtaXRD
aGVja0FuZFByZXBhcmVQb2ludGVyKEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsCiAgICAgc3dpdGNo
IChtX21vZGUpIHsKICAgICBjYXNlIE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nOiB7CiAgICAg
ICAgIC8vIFdlJ3JlIG5vdCB1c2luZyBzaWduYWwgaGFuZGxpbmcgYXQgYWxsLCB3ZSBtdXN0IHRo
ZXJlZm9yZSBjaGVjayB0aGF0IG5vIG1lbW9yeSBhY2Nlc3MgZXhjZWVkcyB0aGUgY3VycmVudCBt
ZW1vcnkgc2l6ZS4KLSAgICAgICAgQVNTRVJUKG1fbWVtb3J5U2l6ZUdQUik7CisgICAgICAgIEFT
U0VSVChtX2JvdW5kc0NoZWNraW5nU2l6ZUdQUik7CiAgICAgICAgIEFTU0VSVChzaXplT2ZPcGVy
YXRpb24gKyBvZmZzZXQgPiBvZmZzZXQpOwotICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PFdhc21Cb3VuZHNDaGVja1ZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBtX21lbW9yeVNpemVH
UFIsIHBvaW50ZXIsIHNpemVPZk9wZXJhdGlvbiArIG9mZnNldCAtIDEpOworICAgICAgICBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PFdhc21Cb3VuZHNDaGVja1ZhbHVlPihtX3Byb2MsIG9yaWdp
bigpLCBtX2JvdW5kc0NoZWNraW5nU2l6ZUdQUiwgcG9pbnRlciwgc2l6ZU9mT3BlcmF0aW9uICsg
b2Zmc2V0IC0gMSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTcxMCw3ICsxNzEyLDcg
QEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNv
bnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLAogCiAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0
byBjbG9iYmVyIHRoZSBzaXplIHJlZ2lzdGVyIHNpbmNlIHRoZSBMTEludCBhbHdheXMgYm91bmRz
IGNoZWNrcwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gTWVtb3J5TW9kZTo6U2lnbmFs
aW5nKQotICAgICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3Rl
clNldCB7IFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkuc2l6ZVJlZ2lzdGVyIH0pOworICAgICAg
ICAgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldCB7IFBpbm5l
ZFJlZ2lzdGVySW5mbzo6Z2V0KCkuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgfSk7CiAgICAg
ICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFt1bmxpbmtlZFdhc21Ub1dhc21D
YWxscywgZnVuY3Rpb25JbmRleF0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LnRocmVhZFNhZmVQYXRjaGFibGVOZWFyQ2Fs
bCgpOwpAQCAtMTgzMSwxNiArMTgzMywxNiBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJ
bmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdAogICAg
ICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG9sZENvbnRleHRJbnN0
YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkU3RhY2tMaW1pdCgpKSwgYmFzZU1lbW9yeSk7
CiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoYmFzZU1lbW9yeSwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKG5ld0NvbnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkU3RhY2tMaW1p
dCgpKSk7CiAgICAgICAgICAgICBqaXQuc3RvcmVXYXNtQ29udGV4dEluc3RhbmNlKG5ld0NvbnRl
eHRJbnN0YW5jZSk7Ci0gICAgICAgICAgICBBU1NFUlQocGlubmVkUmVncy5zaXplUmVnaXN0ZXIg
IT0gYmFzZU1lbW9yeSk7CisgICAgICAgICAgICBBU1NFUlQocGlubmVkUmVncy5ib3VuZHNDaGVj
a2luZ1NpemVSZWdpc3RlciAhPSBiYXNlTWVtb3J5KTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgc3VwcG9ydCBtb3JlIHRoYW4gb25lIG1lbW9yeSBzaXplIHJlZ2lzdGVyCiAgICAg
ICAgICAgICAvLyAgIHNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2Mjk1MgotICAgICAgICAgICAgQVNTRVJUKHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyICE9IG5l
d0NvbnRleHRJbnN0YW5jZSk7Ci0gICAgICAgICAgICBHUFJSZWcgc2NyYXRjaE9yU2l6ZSA9IEdp
Z2FjYWdlOjppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyBwYXJhbXMuZ3BTY3JhdGNo
KDApIDogcGlubmVkUmVncy5zaXplUmVnaXN0ZXI7CisgICAgICAgICAgICBBU1NFUlQocGlubmVk
UmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciAhPSBuZXdDb250ZXh0SW5zdGFuY2UpOwor
ICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSA9IEdpZ2FjYWdl
Ojppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDog
cGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlcjsKIAotICAgICAgICAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG5ld0NvbnRleHRJbnN0YW5jZSwgSW5zdGFu
Y2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSwgcGlubmVkUmVncy5zaXplUmVnaXN0ZXIp
OyAvLyBNZW1vcnkgc2l6ZS4KKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6
QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZEJvdW5k
c0NoZWNraW5nU2l6ZSgpKSwgcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7
IC8vIE1lbW9yeSBzaXplLgogICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKG5ld0NvbnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5
KCkpLCBiYXNlTWVtb3J5KTsgLy8gTWVtb3J5Ojp2b2lkKi4KIAotICAgICAgICAgICAgaml0LmNh
Z2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJl
Z3Muc2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JTaXplKTsKKyAgICAgICAgICAgIGppdC5jYWdlQ29u
ZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLmJv
dW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOwog
ICAgICAgICB9KTsKICAgICAgICAgZG9Db250ZXh0U3dpdGNoLT5hcHBlbmROZXdDb250cm9sVmFs
dWUobV9wcm9jLCBKdW1wLCBvcmlnaW4oKSwgY29udGludWF0aW9uKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCmluZGV4IDk0MWQwMTYzN2NjYzkwMjdiYjMw
OTRmOWYyY2NjYjJlNmNkMzFhOTIuLjY1NzU5YTdjYzA5NTRkNmFiNzU5ZWI0YThhOGMxNTE5NGNi
OWNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5n
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKQEAg
LTQ5LDkgKzQ5LDkgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0
clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9XYXNtKHVuc2kKICAgICBHUFJSZWcgYmFzZU1l
bW9yeSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7CiAgICAgQVNTRVJUKGJhc2VNZW1v
cnkgIT0gR1BSUmVnOjpJbnZhbGlkR1BSUmVnKTsKICAgICBBU1NFUlQoYmFzZU1lbW9yeSAhPSBz
Y3JhdGNoKTsKLSAgICBBU1NFUlQocGlubmVkUmVncy5zaXplUmVnaXN0ZXIgIT0gYmFzZU1lbW9y
eSk7Ci0gICAgQVNTRVJUKHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyICE9IHNjcmF0Y2gpOwotICAg
IEdQUlJlZyBzaXplUmVnQXNTY3JhdGNoID0gcGlubmVkUmVncy5zaXplUmVnaXN0ZXI7CisgICAg
QVNTRVJUKHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgIT0gYmFzZU1lbW9y
eSk7CisgICAgQVNTRVJUKHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgIT0g
c2NyYXRjaCk7CisgICAgR1BSUmVnIHNpemVSZWdBc1NjcmF0Y2ggPSBwaW5uZWRSZWdzLmJvdW5k
c0NoZWNraW5nU2l6ZVJlZ2lzdGVyOwogICAgIEFTU0VSVChzaXplUmVnQXNTY3JhdGNoICE9IEdQ
UlJlZzo6SW52YWxpZEdQUlJlZyk7CiAKICAgICAvLyBCMydzIGNhbGwgY29kZWdlbiBlbnN1cmVz
IHRoYXQgdGhlIEpTQ2VsbCBpcyBhIFdlYkFzc2VtYmx5RnVuY3Rpb24uCkBAIC02OCwxMSArNjgs
MTEgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJp
bmRpbmdGYWlsdXJlPiB3YXNtVG9XYXNtKHVuc2kKICAgICAvLyBGSVhNRSB0aGUgZm9sbG93aW5n
IGNvZGUgYXNzdW1lcyB0aGF0IGFsbCBXYXNtOjpJbnN0YW5jZSBoYXZlIHRoZSBzYW1lIHBpbm5l
ZCByZWdpc3RlcnMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5
NTIKICAgICAvLyBTZXQgdXAgdGhlIGNhbGxlZSdzIGJhc2VNZW1vcnkgcmVnaXN0ZXIgYXMgd2Vs
bCBhcyB0aGUgbWVtb3J5IHNpemUgcmVnaXN0ZXJzLgogICAgIHsKLSAgICAgICAgR1BSUmVnIHNj
cmF0Y2hPclNpemUgPSAhR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/
IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyIDogd2FzbUNhbGxpbmdDb252ZW50aW9uKCkucHJvbG9n
dWVTY3JhdGNoR1BSc1sxXTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hPckJvdW5kc0NoZWNraW5n
U2l6ZSA9ICFHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUpID8gcGlubmVk
UmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciA6IHdhc21DYWxsaW5nQ29udmVudGlvbigp
LnByb2xvZ3VlU2NyYXRjaEdQUnNbMV07CiAKLSAgICAgICAgaml0LmxvYWRQdHIoSklUOjpBZGRy
ZXNzKGJhc2VNZW1vcnksIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUo
KSksIHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyKTsgLy8gTWVtb3J5IHNpemUuCisgICAgICAgIGpp
dC5sb2FkUHRyKEpJVDo6QWRkcmVzcyhiYXNlTWVtb3J5LCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0
T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSksIHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdT
aXplUmVnaXN0ZXIpOyAvLyBCb3VuZCBjaGVja2luZyBzaXplLgogICAgICAgICBqaXQubG9hZFB0
cihKSVQ6OkFkZHJlc3MoYmFzZU1lbW9yeSwgV2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVk
TWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsgLy8gV2FzbTo6TWVtb3J5OjpUYWdnZWRBcnJheVN0b3Jh
Z2VQdHI8dm9pZD4gKHZvaWQqKS4KLSAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2Fj
YWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyLCBzY3Jh
dGNoT3JTaXplKTsKKyAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmlt
aXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIs
IHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSk7CiAgICAgfQogCiAgICAgLy8gVGFpbCBjYWxs
IGludG8gdGhlIGNhbGxlZSBXZWJBc3NlbWJseSBmdW5jdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKaW5kZXggM2Vh
MDA4ODkwMWI2YzI3Y2Y2NWIwYjQ3NGRkOGRjOTVjNzgxNTFmZi4uMDRjMzRiN2U4YWU2ZDdkZTZh
YTlhZjQwOTM2YThjM2UyYTU3NGM0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKQEAgLTYzLDI5ICs2Myw0MCBAQCBz
dGF0aWMgU2lnbmFsQWN0aW9uIHRyYXBIYW5kbGVyKFNpZ25hbCwgU2lnSW5mbyYgc2lnSW5mbywg
UGxhdGZvcm1SZWdpc3RlcnMmIGNvbgogICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhh
bmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgInN0YXJ0aW5nIGhhbmRsZXIgZm9yIGZhdWx0IGF0OiAi
LCBSYXdQb2ludGVyKGZhdWx0aW5nSW5zdHJ1Y3Rpb24pKTsKIAogICAgIGRhdGFMb2dMbklmKFdh
c21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkpJVCBtZW1vcnkgc3RhcnQ6
ICIsIFJhd1BvaW50ZXIoc3RhcnRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2woKSksICIgZW5k
OiAiLCBSYXdQb2ludGVyKGVuZE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCgpKSk7Ci0gICAg
Ly8gRmlyc3Qgd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgYXJlIGluIEpJVCBjb2RlIGJlZm9yZSB3
ZSBjYW4gYXF1aXJlIGFueSBsb2Nrcy4gT3RoZXJ3aXNlLAorICAgIGRhdGFMb2dMbklmKFdhc21G
YXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgIldhc21MTEludCBtZW1vcnkgc3Rh
cnQ6ICIsIFJhd1BvaW50ZXIodW50YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWc+KExM
SW50Ojp3YXNtTExJbnRQQ1JhbmdlU3RhcnQpKSwgIiBlbmQ6ICIsIFJhd1BvaW50ZXIodW50YWdD
b2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWc+KExMSW50Ojp3YXNtTExJbnRQQ1JhbmdlRW5k
KSkpOworICAgIC8vIEZpcnN0IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGFyZSBpbiBKSVQgY29k
ZSBvciBXYXNtIExMSW50IGNvZGUgYmVmb3JlIHdlIGNhbiBhcXVpcmUgYW55IGxvY2tzLiBPdGhl
cndpc2UsCiAgICAgLy8gd2UgbWlnaHQgaGF2ZSBjcmFzaGVkIGluIGNvZGUgdGhhdCBpcyBhbHJl
YWR5IGhvbGRpbmcgb25lIG9mIHRoZSBsb2NrcyB3ZSB3YW50IHRvIGFxdWlyZS4KICAgICBhc3Nl
cnRJc05vdFRhZ2dlZChmYXVsdGluZ0luc3RydWN0aW9uKTsKLSAgICBpZiAoaXNKSVRQQyhmYXVs
dGluZ0luc3RydWN0aW9uKSkgewotICAgICAgICBib29sIGZhdWx0ZWRJbkFjdGl2ZUZhc3RNZW1v
cnkgPSBmYWxzZTsKKyAgICBpZiAoaXNKSVRQQyhmYXVsdGluZ0luc3RydWN0aW9uKSB8fCBMTElu
dDo6aXNXYXNtTExJbnRQQyhmYXVsdGluZ0luc3RydWN0aW9uKSkgeworICAgICAgICBib29sIGZh
dWx0ZWRJbkFjdGl2ZUdyb3dhYmxlTWVtb3J5ID0gZmFsc2U7CiAgICAgICAgIHsKICAgICAgICAg
ICAgIHZvaWQqIGZhdWx0aW5nQWRkcmVzcyA9IHNpZ0luZm8uZmF1bHRpbmdBZGRyZXNzOwogICAg
ICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJi
b3NlLCAiY2hlY2tpbmcgZmF1bHRpbmcgYWRkcmVzczogIiwgUmF3UG9pbnRlcihmYXVsdGluZ0Fk
ZHJlc3MpLCAiIGlzIGluIGFuIGFjdGl2ZSBmYXN0IG1lbW9yeSIpOwotICAgICAgICAgICAgZmF1
bHRlZEluQWN0aXZlRmFzdE1lbW9yeSA9IFdhc206Ok1lbW9yeTo6YWRkcmVzc0lzSW5BY3RpdmVG
YXN0TWVtb3J5KGZhdWx0aW5nQWRkcmVzcyk7CisgICAgICAgICAgICBmYXVsdGVkSW5BY3RpdmVH
cm93YWJsZU1lbW9yeSA9IFdhc206Ok1lbW9yeTo6YWRkcmVzc0lzSW5BY3RpdmVHcm93YWJsZU1l
bW9yeShmYXVsdGluZ0FkZHJlc3MpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChmYXVsdGVkSW5B
Y3RpdmVGYXN0TWVtb3J5KSB7CisgICAgICAgIGlmIChmYXVsdGVkSW5BY3RpdmVHcm93YWJsZU1l
bW9yeSkgewogICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlcklu
dGVybmFsOjp2ZXJib3NlLCAiZm91bmQgYWN0aXZlIGZhc3QgbWVtb3J5IGZvciBmYXVsdGluZyBh
ZGRyZXNzIik7Ci0gICAgICAgICAgICBhdXRvJiBjYWxsZWVSZWdpc3RyeSA9IENhbGxlZVJlZ2lz
dHJ5OjpzaW5nbGV0b24oKTsKLSAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2Fs
bGVlUmVnaXN0cnkuZ2V0TG9jaygpKTsKLSAgICAgICAgICAgIGZvciAoYXV0byogY2FsbGVlIDog
Y2FsbGVlUmVnaXN0cnkuYWxsQ2FsbGVlcyhsb2NrZXIpKSB7Ci0gICAgICAgICAgICAgICAgYXV0
byBbc3RhcnQsIGVuZF0gPSBjYWxsZWUtPnJhbmdlKCk7Ci0gICAgICAgICAgICAgICAgZGF0YUxv
Z0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAiZnVuY3Rpb24g
c3RhcnQ6ICIsIFJhd1BvaW50ZXIoc3RhcnQpLCAiIGVuZDogIiwgUmF3UG9pbnRlcihlbmQpKTsK
LSAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPD0gZmF1bHRpbmdJbnN0cnVjdGlvbiAmJiBmYXVs
dGluZ0luc3RydWN0aW9uIDwgZW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklm
KFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZvdW5kIG1hdGNoIik7
Ci0gICAgICAgICAgICAgICAgICAgIE1hY2hpbmVDb250ZXh0Ojphcmd1bWVudFBvaW50ZXI8MT4o
Y29udGV4dCkgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+
KFdhc206OkNvbnRleHQ6OnVzZUZhc3RUTFMoKSkpOwotICAgICAgICAgICAgICAgICAgICBNYWNo
aW5lQ29udGV4dDo6c2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQsIExMSW50OjpnZXRDb2Rl
UHRyPENGdW5jdGlvblB0clRhZz4od2FzbV90aHJvd19mcm9tX2ZhdWx0X2hhbmRsZXJfdHJhbXBv
bGluZSkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2lnbmFsQWN0aW9uOjpIYW5kbGVk
OworCisgICAgICAgICAgICBhdXRvIGRvZXNGYXVsdEluV2FzbSA9IFtdKHZvaWQqIGZhdWx0aW5n
SW5zdHJ1Y3Rpb24pIHsKKyAgICAgICAgICAgICAgICBpZiAoTExJbnQ6OmlzV2FzbUxMSW50UEMo
ZmF1bHRpbmdJbnN0cnVjdGlvbikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgIGF1dG8mIGNhbGxlZVJlZ2lzdHJ5ID0gQ2FsbGVlUmVnaXN0cnk6OnNp
bmdsZXRvbigpOworICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2FsbGVl
UmVnaXN0cnkuZ2V0TG9jaygpKTsKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGNhbGxlZSA6
IGNhbGxlZVJlZ2lzdHJ5LmFsbENhbGxlZXMobG9ja2VyKSkgeworICAgICAgICAgICAgICAgICAg
ICBhdXRvIFtzdGFydCwgZW5kXSA9IGNhbGxlZS0+cmFuZ2UoKTsKKyAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAi
ZnVuY3Rpb24gc3RhcnQ6ICIsIFJhd1BvaW50ZXIoc3RhcnQpLCAiIGVuZDogIiwgUmF3UG9pbnRl
cihlbmQpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0IDw9IGZhdWx0aW5nSW5zdHJ1
Y3Rpb24gJiYgZmF1bHRpbmdJbnN0cnVjdGlvbiA8IGVuZCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3Nl
LCAiZm91bmQgbWF0Y2giKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGlmIChkb2VzRmF1
bHRJbldhc20oZmF1bHRpbmdJbnN0cnVjdGlvbikpIHsKKyAgICAgICAgICAgICAgICBNYWNoaW5l
Q29udGV4dDo6YXJndW1lbnRQb2ludGVyPDE+KGNvbnRleHQpID0gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihXYXNtOjpDb250ZXh0Ojp1c2VGYXN0VExTKCkp
KTsKKyAgICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6c2V0SW5zdHJ1Y3Rpb25Qb2ludGVy
KGNvbnRleHQsIExMSW50OjpnZXRDb2RlUHRyPENGdW5jdGlvblB0clRhZz4od2FzbV90aHJvd19m
cm9tX2ZhdWx0X2hhbmRsZXJfdHJhbXBvbGluZSkpOworICAgICAgICAgICAgICAgIHJldHVybiBT
aWduYWxBY3Rpb246OkhhbmRsZWQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBA
IC0xMDcsNyArMTE4LDcgQEAgdm9pZCBlbmFibGVGYXN0TWVtb3J5KCkKICAgICAgICAgaWYgKCFX
YXNtOjppc1N1cHBvcnRlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICgh
T3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCkpCisgICAgICAgIGlmICghT3B0aW9u
czo6dXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCkgJiYgIU9wdGlvbnM6OnVzZVNoYXJlZEFycmF5
QnVmZmVyKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYWN0aXZhdGVTaWduYWxI
YW5kbGVyc0ZvcihTaWduYWw6OkFjY2Vzc0ZhdWx0KTsKQEAgLTEyNSw3ICsxMzYsNyBAQCB2b2lk
IHByZXBhcmVGYXN0TWVtb3J5KCkKICAgICAgICAgaWYgKCFXYXNtOjppc1N1cHBvcnRlZCgpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICghT3B0aW9uczo6dXNlV2ViQXNzZW1i
bHlGYXN0TWVtb3J5KCkpCisgICAgICAgIGlmICghT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0
TWVtb3J5KCkgJiYgIU9wdGlvbnM6OnVzZVNoYXJlZEFycmF5QnVmZmVyKCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgYWRkU2lnbmFsSGFuZGxlcihTaWduYWw6OkFjY2Vzc0ZhdWx0
LCBbXSAoU2lnbmFsIHNpZ25hbCwgU2lnSW5mbyYgc2lnSW5mbywgUGxhdGZvcm1SZWdpc3RlcnMm
IHVjb250ZXh0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
SW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCmlu
ZGV4IDYwZTU2MTkwMmQ0YzE4ZjgxZWUyZjM3Y2M1YmU3ZDY1NDY2N2RlZWYuLjlhOTg1MmMyNDIy
MDgyN2I3ZWEwZWU3NGRlZmE0MzQ1Yzg4MTBlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21JbnN0YW5jZS5oCkBAIC03Nyw4ICs3Nyw4IEBAIGNsYXNzIEluc3RhbmNlIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRy
PEluCiAgICAgVGFibGUqIHRhYmxlKHVuc2lnbmVkKTsKICAgICB2b2lkIHNldFRhYmxlKHVuc2ln
bmVkLCBSZWY8VGFibGU+JiYpOwogCi0gICAgdm9pZCogY2FjaGVkTWVtb3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWNoZWRNZW1vcnkuZ2V0TWF5QmVOdWxsKGNhY2hlZE1lbW9yeVNpemUoKSk7IH0K
LSAgICBzaXplX3QgY2FjaGVkTWVtb3J5U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkTWVt
b3J5U2l6ZTsgfQorICAgIHZvaWQqIGNhY2hlZE1lbW9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fj
aGVkTWVtb3J5LmdldE1heUJlTnVsbChjYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSk7IH0KKyAg
ICBzaXplX3QgY2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jYWNo
ZWRCb3VuZHNDaGVja2luZ1NpemU7IH0KIAogICAgIHZvaWQgc2V0TWVtb3J5KFJlZjxNZW1vcnk+
JiYgbWVtb3J5KQogICAgIHsKQEAgLTg5LDggKzg5LDggQEAgY2xhc3MgSW5zdGFuY2UgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW5zdGFuY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
SW4KICAgICB2b2lkIHVwZGF0ZUNhY2hlZE1lbW9yeSgpCiAgICAgewogICAgICAgICBpZiAobV9t
ZW1vcnkgIT0gbnVsbHB0cikgewotICAgICAgICAgICAgbV9jYWNoZWRNZW1vcnkgPSBDYWdlZFB0
cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj4obWVtb3J5KCktPm1lbW9y
eSgpLCBtZW1vcnkoKS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG1fY2FjaGVkTWVtb3J5U2l6ZSA9
IG1lbW9yeSgpLT5zaXplKCk7CisgICAgICAgICAgICBtX2NhY2hlZE1lbW9yeSA9IENhZ2VkUHRy
PEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPihtZW1vcnkoKS0+bWVtb3J5
KCksIG1lbW9yeSgpLT5ib3VuZHNDaGVja2luZ1NpemUoKSk7CisgICAgICAgICAgICBtX2NhY2hl
ZEJvdW5kc0NoZWNraW5nU2l6ZSA9IG1lbW9yeSgpLT5ib3VuZHNDaGVja2luZ1NpemUoKTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtMTQ2LDcgKzE0Niw3IEBAIGNsYXNzIEluc3RhbmNlIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRy
PEluCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk1lbW9yeSgpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihJbnN0YW5jZSwgbV9tZW1vcnkpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZkdsb2JhbHMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fZ2xv
YmFscyk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FjaGVkTWVtb3J5KCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX2NhY2hlZE1lbW9yeSk7IH0KLSAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihJbnN0YW5jZSwgbV9jYWNoZWRNZW1vcnlTaXplKTsgfQorICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fY2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKTsgfQogICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZQb2ludGVyVG9Ub3BFbnRyeUZyYW1lKCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX3BvaW50ZXJUb1RvcEVudHJ5RnJhbWUpOyB9
CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUG9pbnRlclRvQWN0dWFsU3RhY2tMaW1p
dCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5jZSwgbV9wb2ludGVyVG9BY3R1YWxT
dGFja0xpbWl0KTsgfQpAQCAtMjAxLDcgKzIwMSw3IEBAIGNsYXNzIEluc3RhbmNlIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPElu
CiAgICAgdm9pZCogbV9vd25lciB7IG51bGxwdHIgfTsgLy8gSW4gYSBKUyBlbWJlZGRpbmcsIHRo
aXMgaXMgYSBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqLgogICAgIENvbnRleHQqIG1fY29udGV4dCB7
IG51bGxwdHIgfTsKICAgICBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdD
YWdlZFB0cj4gbV9jYWNoZWRNZW1vcnk7Ci0gICAgc2l6ZV90IG1fY2FjaGVkTWVtb3J5U2l6ZSB7
IDAgfTsKKyAgICBzaXplX3QgbV9jYWNoZWRCb3VuZHNDaGVja2luZ1NpemUgeyAwIH07CiAgICAg
UmVmPE1vZHVsZT4gbV9tb2R1bGU7CiAgICAgUmVmUHRyPENvZGVCbG9jaz4gbV9jb2RlQmxvY2s7
CiAgICAgUmVmUHRyPE1lbW9yeT4gbV9tZW1vcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21NZW1vcnkuY3BwCmluZGV4IGEyNmU4MWQ3MTI0ZjMwYWUxM2Q4MmI3NGNiMWQ0MzA2YTM0
ZTI1YjIuLjI3NDllMTAxYTc4NDM1YjQ1NTI5OTIxZTlkNjU1NmFhMjYyMDQ2MDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAj
aW5jbHVkZSA8d3RmL1JBTVNpemUuaD4KKyNpbmNsdWRlIDx3dGYvU3RkU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiAjaW5jbHVkZSA8Y3N0cmluZz4KQEAgLTEzMywxNiArMTM0LDU1
IEBAIGNsYXNzIE1lbW9yeU1hbmFnZXIgewogICAgICAgICAKICAgICAgICAgZGF0YUxvZ0xuSWYo
T3B0aW9uczo6bG9nV2ViQXNzZW1ibHlNZW1vcnkoKSwgIkZyZWVkIHZpcnR1YWw7IHN0YXRlOiAi
LCAqdGhpcyk7CiAgICAgfQotICAgIAotICAgIGJvb2wgaXNBZGRyZXNzSW5GYXN0TWVtb3J5KHZv
aWQqIGFkZHJlc3MpCisKKyAgICBNZW1vcnlSZXN1bHQgdHJ5QWxsb2NhdGVHcm93YWJsZUJvdW5k
c0NoZWNraW5nTWVtb3J5KHNpemVfdCBtYXBwZWRDYXBhY2l0eSkKKyAgICB7CisgICAgICAgIE1l
bW9yeVJlc3VsdCByZXN1bHQgPSBbJl0geworICAgICAgICAgICAgYXV0byBob2xkZXIgPSBob2xk
TG9jayhtX2xvY2spOworICAgICAgICAgICAgdm9pZCogcmVzdWx0ID0gR2lnYWNhZ2U6OnRyeUFs
bG9jYXRlWmVyb2VkVmlydHVhbFBhZ2VzKEdpZ2FjYWdlOjpQcmltaXRpdmUsIG1hcHBlZENhcGFj
aXR5KTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiBN
ZW1vcnlSZXN1bHQobnVsbHB0ciwgTWVtb3J5UmVzdWx0OjpTeW5jVHJ5VG9SZWNsYWltTWVtb3J5
KTsKKworICAgICAgICAgICAgbV9ncm93YWJsZUJvdW5kc0NoZWNraW5nTWVtb3JpZXMuaW5zZXJ0
KHN0ZDo6bWFrZV9wYWlyKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHJlc3VsdCksIG1hcHBlZENh
cGFjaXR5KSk7CisKKyAgICAgICAgICAgIHJldHVybiBNZW1vcnlSZXN1bHQocmVzdWx0LCBNZW1v
cnlSZXN1bHQ6OlN1Y2Nlc3MpOworICAgICAgICB9KCk7CisKKyAgICAgICAgZGF0YUxvZ0xuSWYo
T3B0aW9uczo6bG9nV2ViQXNzZW1ibHlNZW1vcnkoKSwgIkFsbG9jYXRlZCB2aXJ0dWFsOiAiLCBy
ZXN1bHQsICI7IHN0YXRlOiAiLCAqdGhpcyk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisKKyAgICB2b2lkIGZyZWVHcm93YWJsZUJvdW5kc0NoZWNraW5nTWVtb3J5KHZvaWQqIGJh
c2VQdHIsIHNpemVfdCBtYXBwZWRDYXBhY2l0eSkKKyAgICB7CisgICAgICAgIHsKKyAgICAgICAg
ICAgIGF1dG8gaG9sZGVyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgICAgIEdpZ2FjYWdl
OjpmcmVlVmlydHVhbFBhZ2VzKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VQdHIsIG1hcHBlZENh
cGFjaXR5KTsKKyAgICAgICAgICAgIG1fZ3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9yaWVzLmVy
YXNlKHN0ZDo6bWFrZV9wYWlyKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGJhc2VQdHIpLCBtYXBw
ZWRDYXBhY2l0eSkpOworICAgICAgICB9CisKKyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6
bG9nV2ViQXNzZW1ibHlNZW1vcnkoKSwgIkZyZWVkIHZpcnR1YWw7IHN0YXRlOiAiLCAqdGhpcyk7
CisgICAgfQorCisgICAgYm9vbCBpc0FkZHJlc3NJbkdyb3dhYmxlTWVtb3J5KHZvaWQqIGFkZHJl
c3MpCiAgICAgewotICAgICAgICAvLyBOT1RFOiBUaGlzIGNhbiBiZSBjYWxsZWQgZnJvbSBhIHNp
Z25hbCBoYW5kbGVyLCBidXQgb25seSBhZnRlciB3ZSBwcm92ZWQgdGhhdCB3ZSdyZSBpbiBKSVQg
Y29kZS4KKyAgICAgICAgLy8gTk9URTogVGhpcyBjYW4gYmUgY2FsbGVkIGZyb20gYSBzaWduYWwg
aGFuZGxlciwgYnV0IG9ubHkgYWZ0ZXIgd2UgcHJvdmVkIHRoYXQgd2UncmUgaW4gSklUIGNvZGUg
b3IgV2FzbUxMSW50IGNvZGUuCiAgICAgICAgIGF1dG8gaG9sZGVyID0gaG9sZExvY2sobV9sb2Nr
KTsKICAgICAgICAgZm9yICh2b2lkKiBtZW1vcnkgOiBtX2Zhc3RNZW1vcmllcykgewogICAgICAg
ICAgICAgY2hhciogc3RhcnQgPSBzdGF0aWNfY2FzdDxjaGFyKj4obWVtb3J5KTsKICAgICAgICAg
ICAgIGlmIChzdGFydCA8PSBhZGRyZXNzICYmIGFkZHJlc3MgPD0gc3RhcnQgKyBNZW1vcnk6OmZh
c3RNYXBwZWRCeXRlcygpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CisgICAgICAgIHVpbnRwdHJfdCBhZGRyZXNzVmFsdWUgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PihhZGRyZXNzKTsKKyAgICAgICAgYXV0byBpdGVyYXRvciA9IHN0ZDo6dXBwZXJfYm91bmQobV9n
cm93YWJsZUJvdW5kc0NoZWNraW5nTWVtb3JpZXMuYmVnaW4oKSwgbV9ncm93YWJsZUJvdW5kc0No
ZWNraW5nTWVtb3JpZXMuZW5kKCksIHN0ZDo6bWFrZV9wYWlyKGFkZHJlc3NWYWx1ZSwgMCksCisg
ICAgICAgICAgICBbXShzdGQ6OnBhaXI8dWludHB0cl90LCBzaXplX3Q+IGEsIHN0ZDo6cGFpcjx1
aW50cHRyX3QsIHNpemVfdD4gYikgeworICAgICAgICAgICAgICAgIHJldHVybiAoYS5maXJzdCAr
IGEuc2Vjb25kKSA8IChiLmZpcnN0ICsgYi5zZWNvbmQpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIGlmIChpdGVyYXRvciAhPSBtX2dyb3dhYmxlQm91bmRzQ2hlY2tpbmdNZW1vcmllcy5lbmQo
KSkgeworICAgICAgICAgICAgLy8gU2luY2Ugd2UgbmV2ZXIgaGF2ZSBvdmVybGFwcGVkIHJhbmdl
IGluIG1fZ3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9yaWVzLCBqdXN0IGNoZWNraW5nIG9uZSBs
b3dlci1ib3VuZCByYW5nZSBpcyBlbm91Z2guCisgICAgICAgICAgICBpZiAoaXRlcmF0b3ItPmZp
cnN0IDw9IGFkZHJlc3NWYWx1ZSAmJiBhZGRyZXNzVmFsdWUgPCAoaXRlcmF0b3ItPmZpcnN0ICsg
aXRlcmF0b3ItPnNlY29uZCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTkyLDYgKzIzMiw3IEBAIGNs
YXNzIE1lbW9yeU1hbmFnZXIgewogICAgIExvY2sgbV9sb2NrOwogICAgIHVuc2lnbmVkIG1fbWF4
RmFzdE1lbW9yeUNvdW50IHsgMCB9OwogICAgIFZlY3Rvcjx2b2lkKj4gbV9mYXN0TWVtb3JpZXM7
CisgICAgU3RkU2V0PHN0ZDo6cGFpcjx1aW50cHRyX3QsIHNpemVfdD4+IG1fZ3Jvd2FibGVCb3Vu
ZHNDaGVja2luZ01lbW9yaWVzOwogICAgIHNpemVfdCBtX3BoeXNpY2FsQnl0ZXMgeyAwIH07CiB9
OwogCkBAIC0yMzUsMTMgKzI3Niw1NyBAQCBib29sIHRyeUFsbG9jYXRlKGNvbnN0IEZ1bmMmIGFs
bG9jYXRlLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoTWVtb3J5OjpOb3RpZnlQcgogCiB9IC8v
IGFub255bW91cyBuYW1lc3BhY2UKIAorCitNZW1vcnlIYW5kbGU6Ok1lbW9yeUhhbmRsZSh2b2lk
KiBtZW1vcnksIHNpemVfdCBzaXplLCBzaXplX3QgbWFwcGVkQ2FwYWNpdHksIFBhZ2VDb3VudCBp
bml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgTWVtb3J5U2hhcmluZ01vZGUgc2hhcmluZ01vZGUs
IE1lbW9yeU1vZGUgbW9kZSkKKyAgICA6IG1fbWVtb3J5KG1lbW9yeSwgbWFwcGVkQ2FwYWNpdHkp
CisgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAsIG1fbWFwcGVkQ2FwYWNpdHkobWFwcGVkQ2FwYWNp
dHkpCisgICAgLCBtX2luaXRpYWwoaW5pdGlhbCkKKyAgICAsIG1fbWF4aW11bShtYXhpbXVtKQor
ICAgICwgbV9zaGFyaW5nTW9kZShzaGFyaW5nTW9kZSkKKyAgICAsIG1fbW9kZShtb2RlKQorewor
fQorCitNZW1vcnlIYW5kbGU6On5NZW1vcnlIYW5kbGUoKQoreworICAgIGlmIChtX21lbW9yeSkg
eworICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZVBoeXNpY2FsQnl0ZXMobV9zaXplKTsKKyAg
ICAgICAgc3dpdGNoIChtX21vZGUpIHsKKyAgICAgICAgY2FzZSBNZW1vcnlNb2RlOjpTaWduYWxp
bmc6CisgICAgICAgICAgICBpZiAobXByb3RlY3QobWVtb3J5KCksIE1lbW9yeTo6ZmFzdE1hcHBl
ZEJ5dGVzKCksIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpKSB7CisgICAgICAgICAgICAgICAgZGF0
YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZUZhc3RNZW1vcnkobWVtb3J5KCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmc6
IHsKKyAgICAgICAgICAgIHN3aXRjaCAobV9zaGFyaW5nTW9kZSkgeworICAgICAgICAgICAgY2Fz
ZSBNZW1vcnlTaGFyaW5nTW9kZTo6RGVmYXVsdDoKKyAgICAgICAgICAgICAgICBHaWdhY2FnZTo6
ZnJlZVZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBtZW1vcnkoKSwgbV9zaXplKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTWVtb3J5U2hhcmluZ01v
ZGU6OlNoYXJlZDogeworICAgICAgICAgICAgICAgIGlmIChtcHJvdGVjdChtZW1vcnkoKSwgbV9t
YXBwZWRDYXBhY2l0eSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIp
OworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZUdyb3dh
YmxlQm91bmRzQ2hlY2tpbmdNZW1vcnkobWVtb3J5KCksIG1fbWFwcGVkQ2FwYWNpdHkpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwogTWVtb3J5OjpN
ZW1vcnkoKQorICAgIDogbV9oYW5kbGUoYWRvcHRSZWYoKm5ldyBNZW1vcnlIYW5kbGUobnVsbHB0
ciwgMCwgMCwgUGFnZUNvdW50KDApLCBQYWdlQ291bnQoMCksIE1lbW9yeVNoYXJpbmdNb2RlOjpE
ZWZhdWx0LCBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpKQogewogfQogCi1NZW1vcnk6Ok1l
bW9yeShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIEZ1bmN0aW9uPHZvaWQo
Tm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBGdW5jdGlvbjx2b2lkKFN5
bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdURjo6RnVuY3Rpb248
dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNjZXNzQ2Fs
bGJhY2spCi0gICAgOiBtX2luaXRpYWwoaW5pdGlhbCkKLSAgICAsIG1fbWF4aW11bShtYXhpbXVt
KQorTWVtb3J5OjpNZW1vcnkoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBN
ZW1vcnlTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSwgRnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3Vy
ZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIEZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFp
bSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNj
ZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykKKyAgICA6
IG1faGFuZGxlKGFkb3B0UmVmKCpuZXcgTWVtb3J5SGFuZGxlKG51bGxwdHIsIDAsIDAsIGluaXRp
YWwsIG1heGltdW0sIHNoYXJpbmdNb2RlLCBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpKQog
ICAgICwgbV9ub3RpZnlNZW1vcnlQcmVzc3VyZShXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJl
KSkKICAgICAsIG1fc3luY1RyeVRvUmVjbGFpbU1lbW9yeShXVEZNb3ZlKHN5bmNUcnlUb1JlY2xh
aW1NZW1vcnkpKQogICAgICwgbV9ncm93U3VjY2Vzc0NhbGxiYWNrKFdURk1vdmUoZ3Jvd1N1Y2Nl
c3NDYWxsYmFjaykpCkBAIC0yNTIsMTMgKzMzNyw4IEBAIE1lbW9yeTo6TWVtb3J5KFBhZ2VDb3Vu
dCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgRnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3Vy
CiAgICAgQVNTRVJUKCFtZW1vcnkoKSk7CiB9CiAKLU1lbW9yeTo6TWVtb3J5KHZvaWQqIG1lbW9y
eSwgUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBzaXplX3QgbWFwcGVkQ2Fw
YWNpdHksIE1lbW9yeU1vZGUgbW9kZSwgRnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYg
bm90aWZ5TWVtb3J5UHJlc3N1cmUsIEZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYg
c3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQ
YWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykKLSAgICA6IG1fbWVt
b3J5KG1lbW9yeSwgaW5pdGlhbC5ieXRlcygpKQotICAgICwgbV9zaXplKGluaXRpYWwuYnl0ZXMo
KSkKLSAgICAsIG1faW5pdGlhbChpbml0aWFsKQotICAgICwgbV9tYXhpbXVtKG1heGltdW0pCi0g
ICAgLCBtX21hcHBlZENhcGFjaXR5KG1hcHBlZENhcGFjaXR5KQotICAgICwgbV9tb2RlKG1vZGUp
CitNZW1vcnk6Ok1lbW9yeShSZWY8TWVtb3J5SGFuZGxlPiYmIGhhbmRsZSwgRnVuY3Rpb248dm9p
ZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIEZ1bmN0aW9uPHZvaWQo
U3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlv
bjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3ND
YWxsYmFjaykKKyAgICA6IG1faGFuZGxlKFdURk1vdmUoaGFuZGxlKSkKICAgICAsIG1fbm90aWZ5
TWVtb3J5UHJlc3N1cmUoV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSkpCiAgICAgLCBtX3N5
bmNUcnlUb1JlY2xhaW1NZW1vcnkoV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSkKICAg
ICAsIG1fZ3Jvd1N1Y2Nlc3NDYWxsYmFjayhXVEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJhY2spKQpA
QCAtMjcxLDcgKzM1MSwxMiBAQCBSZWY8TWVtb3J5PiBNZW1vcnk6OmNyZWF0ZSgpCiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVtb3J5KCkpOwogfQogCi1SZWZQdHI8TWVtb3J5PiBNZW1vcnk6
OnRyeUNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIFdURjo6RnVu
Y3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6
RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4m
JiBncm93U3VjY2Vzc0NhbGxiYWNrKQorUmVmPE1lbW9yeT4gTWVtb3J5OjpjcmVhdGUoUmVmPE1l
bW9yeUhhbmRsZT4mJiBoYW5kbGUsIFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+
JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNs
YWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1
Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lbW9yeShXVEZNb3ZlKGhhbmRsZSksIFdURk1vdmUo
bm90aWZ5TWVtb3J5UHJlc3N1cmUpLCBXVEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpLCBX
VEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJhY2spKSk7Cit9CisKK1JlZlB0cjxNZW1vcnk+IE1lbW9y
eTo6dHJ5Q3JlYXRlKFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgTWVtb3J5
U2hhcmluZ01vZGUgc2hhcmluZ01vZGUsIFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3Vy
ZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9S
ZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jv
d1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKQog
ewogICAgIEFTU0VSVChpbml0aWFsKTsKICAgICBSRUxFQVNFX0FTU0VSVCghbWF4aW11bSB8fCBt
YXhpbXVtID49IGluaXRpYWwpOyAvLyBUaGlzIHNob3VsZCBiZSBndWFyYW50ZWVkIGJ5IG91ciBj
YWxsZXIuCkBAIC0yODUsNyArMzcwLDcgQEAgUmVmUHRyPE1lbW9yeT4gTWVtb3J5Ojp0cnlDcmVh
dGUoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBXVEY6OkZ1bmMKICAgICBp
ZiAobWF4aW11bSAmJiAhbWF4aW11bUJ5dGVzKSB7CiAgICAgICAgIC8vIFVzZXIgc3BlY2lmaWVk
IGEgemVybyBtYXhpbXVtLCBpbml0aWFsIHNpemUgbXVzdCBhbHNvIGJlIHplcm8uCiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKCFpbml0aWFsQnl0ZXMpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1lbW9yeShpbml0aWFsLCBtYXhpbXVtLCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJl
KSwgV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92ZShncm93U3VjY2Vzc0Nh
bGxiYWNrKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lbW9yeShpbml0aWFsLCBt
YXhpbXVtLCBzaGFyaW5nTW9kZSwgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1v
dmUoc3luY1RyeVRvUmVjbGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykp
KTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBkb25lID0gdHJ5QWxsb2NhdGUoCkBAIC0zMDYsNDgg
KzM5MSw1NiBAQCBSZWZQdHI8TWVtb3J5PiBNZW1vcnk6OnRyeUNyZWF0ZShQYWdlQ291bnQgaW5p
dGlhbCwgUGFnZUNvdW50IG1heGltdW0sIFdURjo6RnVuYwogICAgIH0KICAgICAKICAgICBpZiAo
ZmFzdE1lbW9yeSkgewotICAgICAgICAKICAgICAgICAgaWYgKG1wcm90ZWN0KGZhc3RNZW1vcnkg
KyBpbml0aWFsQnl0ZXMsIE1lbW9yeTo6ZmFzdE1hcHBlZEJ5dGVzKCkgLSBpbml0aWFsQnl0ZXMs
IFBST1RfTk9ORSkpIHsKICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwg
c3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lbW9y
eShmYXN0TWVtb3J5LCBpbml0aWFsLCBtYXhpbXVtLCBNZW1vcnk6OmZhc3RNYXBwZWRCeXRlcygp
LCBNZW1vcnlNb2RlOjpTaWduYWxpbmcsIFdURk1vdmUobm90aWZ5TWVtb3J5UHJlc3N1cmUpLCBX
VEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpLCBXVEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJh
Y2spKSk7CisgICAgICAgIHJldHVybiBNZW1vcnk6OmNyZWF0ZShhZG9wdFJlZigqbmV3IE1lbW9y
eUhhbmRsZShmYXN0TWVtb3J5LCBpbml0aWFsQnl0ZXMsIE1lbW9yeTo6ZmFzdE1hcHBlZEJ5dGVz
KCksIGluaXRpYWwsIG1heGltdW0sIHNoYXJpbmdNb2RlLCBNZW1vcnlNb2RlOjpTaWduYWxpbmcp
KSwgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1vdmUoc3luY1RyeVRvUmVjbGFp
bU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykpOwogICAgIH0KICAgICAKICAg
ICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6Y3Jhc2hJZldlYkFzc2VtYmx5Q2FudEZhc3RNZW1vcnko
KSkpCiAgICAgICAgIHdlYkFzc2VtYmx5Q291bGRudEdldEZhc3RNZW1vcnkoKTsKIAogICAgIGlm
ICghaW5pdGlhbEJ5dGVzKQotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lbW9yeShpbml0
aWFsLCBtYXhpbXVtLCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJlKSwgV1RGTW92ZShzeW5j
VHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92ZShncm93U3VjY2Vzc0NhbGxiYWNrKSkpOwotICAg
IAotICAgIHZvaWQqIHNsb3dNZW1vcnkgPSBHaWdhY2FnZTo6dHJ5QWxsb2NhdGVaZXJvZWRWaXJ0
dWFsUGFnZXMoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgaW5pdGlhbEJ5dGVzKTsKLSAgICBpZiAoIXNs
b3dNZW1vcnkpIHsKLSAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVQaHlzaWNhbEJ5dGVzKGlu
aXRpYWxCeXRlcyk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE1lbW9yeShpbml0aWFsLCBtYXhpbXVtLCBzaGFyaW5nTW9kZSwgV1RGTW92ZShu
b3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1vdmUoc3luY1RyeVRvUmVjbGFpbU1lbW9yeSksIFdU
Rk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykpKTsKKworICAgIHN3aXRjaCAoc2hhcmluZ01vZGUp
IHsKKyAgICBjYXNlIE1lbW9yeVNoYXJpbmdNb2RlOjpEZWZhdWx0OiB7CisgICAgICAgIHZvaWQq
IHNsb3dNZW1vcnkgPSBHaWdhY2FnZTo6dHJ5QWxsb2NhdGVaZXJvZWRWaXJ0dWFsUGFnZXMoR2ln
YWNhZ2U6OlByaW1pdGl2ZSwgaW5pdGlhbEJ5dGVzKTsKKyAgICAgICAgaWYgKCFzbG93TWVtb3J5
KSB7CisgICAgICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZVBoeXNpY2FsQnl0ZXMoaW5pdGlh
bEJ5dGVzKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBNZW1vcnk6OmNyZWF0ZShhZG9wdFJlZigqbmV3IE1lbW9yeUhhbmRsZShzbG93TWVt
b3J5LCBpbml0aWFsQnl0ZXMsIGluaXRpYWxCeXRlcywgaW5pdGlhbCwgbWF4aW11bSwgc2hhcmlu
Z01vZGUsIE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSksIFdURk1vdmUobm90aWZ5TWVtb3J5
UHJlc3N1cmUpLCBXVEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpLCBXVEZNb3ZlKGdyb3dT
dWNjZXNzQ2FsbGJhY2spKTsKICAgICB9Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZW1vcnko
c2xvd01lbW9yeSwgaW5pdGlhbCwgbWF4aW11bSwgaW5pdGlhbEJ5dGVzLCBNZW1vcnlNb2RlOjpC
b3VuZHNDaGVja2luZywgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1vdmUoc3lu
Y1RyeVRvUmVjbGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykpKTsKLX0K
KyAgICBjYXNlIE1lbW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQ6IHsKKyAgICAgICAgY2hhciogc2xv
d01lbW9yeSA9IG51bGxwdHI7CisgICAgICAgIHRyeUFsbG9jYXRlKAorICAgICAgICAgICAgWyZd
ICgpIC0+IE1lbW9yeVJlc3VsdDo6S2luZCB7CisgICAgICAgICAgICAgICAgYXV0byByZXN1bHQg
PSBtZW1vcnlNYW5hZ2VyKCkudHJ5QWxsb2NhdGVHcm93YWJsZUJvdW5kc0NoZWNraW5nTWVtb3J5
KG1heGltdW1CeXRlcyk7CisgICAgICAgICAgICAgICAgc2xvd01lbW9yeSA9IGJpdHdpc2VfY2Fz
dDxjaGFyKj4ocmVzdWx0LmJhc2VQdHIpOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQu
a2luZDsKKyAgICAgICAgICAgIH0sIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBzeW5jVHJ5VG9SZWNs
YWltTWVtb3J5KTsKKyAgICAgICAgaWYgKCFzbG93TWVtb3J5KSB7CisgICAgICAgICAgICBtZW1v
cnlNYW5hZ2VyKCkuZnJlZVBoeXNpY2FsQnl0ZXMoaW5pdGlhbEJ5dGVzKTsKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICB9CiAKLU1lbW9yeTo6fk1lbW9yeSgpCi17Ci0gICAg
aWYgKG1fbWVtb3J5KSB7Ci0gICAgICAgIG1lbW9yeU1hbmFnZXIoKS5mcmVlUGh5c2ljYWxCeXRl
cyhtX3NpemUpOwotICAgICAgICBzd2l0Y2ggKG1fbW9kZSkgewotICAgICAgICBjYXNlIE1lbW9y
eU1vZGU6OlNpZ25hbGluZzoKLSAgICAgICAgICAgIGlmIChtcHJvdGVjdChtZW1vcnkoKSwgTWVt
b3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkpIHsKLSAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHN0cmVycm9yKGVycm5vKSwg
IlxuIik7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIG1lbW9yeU1hbmFnZXIoKS5mcmVlRmFzdE1lbW9yeSht
ZW1vcnkoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNZW1vcnlNb2RlOjpC
b3VuZHNDaGVja2luZzoKLSAgICAgICAgICAgIEdpZ2FjYWdlOjpmcmVlVmlydHVhbFBhZ2VzKEdp
Z2FjYWdlOjpQcmltaXRpdmUsIG1lbW9yeSgpLCBtX3NpemUpOwotICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGlmIChtcHJvdGVjdChzbG93TWVtb3J5ICsgaW5pdGlhbEJ5dGVzLCBtYXhpbXVt
Qnl0ZXMgLSBpbml0aWFsQnl0ZXMsIFBST1RfTk9ORSkpIHsKKyAgICAgICAgICAgIGRhdGFMb2co
Im1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gTWVtb3J5OjpjcmVhdGUoYWRvcHRSZWYoKm5ldyBNZW1vcnlIYW5kbGUoc2xvd01lbW9yeSwg
aW5pdGlhbEJ5dGVzLCBtYXhpbXVtQnl0ZXMsIGluaXRpYWwsIG1heGltdW0sIHNoYXJpbmdNb2Rl
LCBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpLCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNz
dXJlKSwgV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92ZShncm93U3VjY2Vz
c0NhbGxiYWNrKSk7CiAgICAgfQorICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCitNZW1vcnk6On5NZW1vcnkoKSA9IGRlZmF1
bHQ7CisKIHNpemVfdCBNZW1vcnk6OmZhc3RNYXBwZWRSZWR6b25lQnl0ZXMoKQogewogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KFBhZ2VDb3VudDo6cGFnZVNpemUpICogT3B0aW9uczo6
d2ViQXNzZW1ibHlGYXN0TWVtb3J5UmVkem9uZVBhZ2VzKCk7CkBAIC0zNTksMTggKzQ1Miw3NyBA
QCBzaXplX3QgTWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKQogICAgIHJldHVybiAoc3RhdGljX2Nh
c3Q8c2l6ZV90PigxKSA8PCAzMikgKyBmYXN0TWFwcGVkUmVkem9uZUJ5dGVzKCk7CiB9CiAKLWJv
b2wgTWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUZhc3RNZW1vcnkodm9pZCogYWRkcmVzcykKK2Jv
b2wgTWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUdyb3dhYmxlTWVtb3J5KHZvaWQqIGFkZHJlc3Mp
CiB7Ci0gICAgcmV0dXJuIG1lbW9yeU1hbmFnZXIoKS5pc0FkZHJlc3NJbkZhc3RNZW1vcnkoYWRk
cmVzcyk7CisgICAgcmV0dXJuIG1lbW9yeU1hbmFnZXIoKS5pc0FkZHJlc3NJbkdyb3dhYmxlTWVt
b3J5KGFkZHJlc3MpOwogfQogCi1FeHBlY3RlZDxQYWdlQ291bnQsIE1lbW9yeTo6R3Jvd0ZhaWxS
ZWFzb24+IE1lbW9yeTo6Z3JvdyhQYWdlQ291bnQgZGVsdGEpCitFeHBlY3RlZDxQYWdlQ291bnQs
IE1lbW9yeTo6R3Jvd0ZhaWxSZWFzb24+IE1lbW9yeTo6Z3Jvd1NoYXJlZChQYWdlQ291bnQgZGVs
dGEpCiB7Ci0gICAgY29uc3QgV2FzbTo6UGFnZUNvdW50IG9sZFBhZ2VDb3VudCA9IHNpemVJblBh
Z2VzKCk7CisgICAgV2FzbTo6UGFnZUNvdW50IG9sZFBhZ2VDb3VudDsKKyAgICBXYXNtOjpQYWdl
Q291bnQgbmV3UGFnZUNvdW50OworICAgIGF1dG8gcmVzdWx0ID0gKFsmXSgpIC0+IEV4cGVjdGVk
PFBhZ2VDb3VudCwgTWVtb3J5OjpHcm93RmFpbFJlYXNvbj4geworICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1faGFuZGxlLT5sb2NrKCkpOworCisgICAgICAgIG9sZFBhZ2VDb3VudCA9
IHNpemVJblBhZ2VzKCk7CisgICAgICAgIG5ld1BhZ2VDb3VudCA9IG9sZFBhZ2VDb3VudCArIGRl
bHRhOworICAgICAgICBpZiAoIW5ld1BhZ2VDb3VudCB8fCAhbmV3UGFnZUNvdW50LmlzVmFsaWQo
KSkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChHcm93RmFpbFJlYXNvbjo6SW52
YWxpZEdyb3dTaXplKTsKKyAgICAgICAgaWYgKG5ld1BhZ2VDb3VudC5ieXRlcygpID4gTUFYX0FS
UkFZX0JVRkZFUl9TSVpFKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEdyb3dG
YWlsUmVhc29uOjpPdXRPZk1lbW9yeSk7CisKKyAgICAgICAgaWYgKGRlbHRhLnBhZ2VDb3VudCgp
ID09IDApCisgICAgICAgICAgICByZXR1cm4gb2xkUGFnZUNvdW50OworCisgICAgICAgIGRhdGFM
b2dMbklmKHZlcmJvc2UsICJNZW1vcnk6Omdyb3coIiwgZGVsdGEsICIpIHRvICIsIG5ld1BhZ2VD
b3VudCwgIiBmcm9tICIsICp0aGlzKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobmV3UGFnZUNv
dW50ID4gUGFnZUNvdW50Ojpmcm9tQnl0ZXMoc2l6ZSgpKSk7CisKKyAgICAgICAgaWYgKG1heGlt
dW0oKSAmJiBuZXdQYWdlQ291bnQgPiBtYXhpbXVtKCkpCisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoR3Jvd0ZhaWxSZWFzb246OldvdWxkRXhjZWVkTWF4aW11bSk7CisKKyAgICAg
ICAgc2l6ZV90IGRlc2lyZWRTaXplID0gbmV3UGFnZUNvdW50LmJ5dGVzKCk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGRlc2lyZWRTaXplIDw9IE1BWF9BUlJBWV9CVUZGRVJfU0laRSk7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGRlc2lyZWRTaXplID4gc2l6ZSgpKTsKKworICAgICAgICAvLyBJ
ZiB0aGUgbWVtb3J5IGlzIE1lbW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQsIHdlIGFscmVhZHkgYWxs
b2NhdGVkIGVub3VnaCB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UgZXZlbiBpZiB0aGUgbWVtb3J5IGlz
IGJvdW5kLWNoZWNraW5nIG1vZGUuIFdlIHBlcmZvcm0gbXByb3RlY3QgdG8gZXh0ZW5kLgorICAg
ICAgICBzaXplX3QgZXh0cmFCeXRlcyA9IGRlc2lyZWRTaXplIC0gc2l6ZSgpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVChleHRyYUJ5dGVzKTsKKyAgICAgICAgYm9vbCBhbGxvY2F0aW9uU3VjY2Vz
cyA9IHRyeUFsbG9jYXRlKAorICAgICAgICAgICAgWyZdICgpIC0+IE1lbW9yeVJlc3VsdDo6S2lu
ZCB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9yeU1hbmFnZXIoKS50cnlBbGxvY2F0ZVBo
eXNpY2FsQnl0ZXMoZXh0cmFCeXRlcyk7CisgICAgICAgICAgICB9LCBbXShXYXNtOjpNZW1vcnk6
Ok5vdGlmeVByZXNzdXJlKSB7IH0sIFtdKE1lbW9yeTo6U3luY1RyeVRvUmVjbGFpbSkgeyB9KTsK
KyAgICAgICAgaWYgKCFhbGxvY2F0aW9uU3VjY2VzcykKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChHcm93RmFpbFJlYXNvbjo6T3V0T2ZNZW1vcnkpOworCisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1lbW9yeSgpKTsKKworICAgICAgICAvLyBTaWduYWxpbmcgbWVtb3J5IG11c3Qg
aGF2ZSBiZWVuIHByZS1hbGxvY2F0ZWQgdmlydHVhbGx5LgorICAgICAgICB1aW50OF90KiBzdGFy
dEFkZHJlc3MgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWVtb3J5KCkpICsgc2l6ZSgpOwogCisg
ICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJNYXJraW5nIFdlYkFzc2VtYmx5IG1lbW9yeSdz
ICIsIFJhd1BvaW50ZXIobWVtb3J5KCkpLCAiIGFzIHJlYWQrd3JpdGUgaW4gcmFuZ2UgWyIsIFJh
d1BvaW50ZXIoc3RhcnRBZGRyZXNzKSwgIiwgIiwgUmF3UG9pbnRlcihzdGFydEFkZHJlc3MgKyBl
eHRyYUJ5dGVzKSwgIikiKTsKKyAgICAgICAgaWYgKG1wcm90ZWN0KHN0YXJ0QWRkcmVzcywgZXh0
cmFCeXRlcywgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkpIHsKKyAgICAgICAgICAgIGRhdGFMb2co
Im1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAgICBXVEY6
OnN0b3JlU3RvcmVGZW5jZSgpOyAvLyBFbnN1cmUgc3RvcmluZyAic2l6ZSIgaGFwcGVucyBhZnRl
ciBtcHJvdGVjdCBpcyBkb25lLgorICAgICAgICBtX2hhbmRsZS0+Z3Jvd1RvU2l6ZShkZXNpcmVk
U2l6ZSk7CisgICAgICAgIHJldHVybiBvbGRQYWdlQ291bnQ7CisgICAgfSgpKTsKKyAgICBpZiAo
cmVzdWx0KQorICAgICAgICBtX2dyb3dTdWNjZXNzQ2FsbGJhY2soR3Jvd1N1Y2Nlc3NUYWcsIG9s
ZFBhZ2VDb3VudCwgbmV3UGFnZUNvdW50KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitFeHBl
Y3RlZDxQYWdlQ291bnQsIE1lbW9yeTo6R3Jvd0ZhaWxSZWFzb24+IE1lbW9yeTo6Z3JvdyhQYWdl
Q291bnQgZGVsdGEpCit7CiAgICAgaWYgKCFkZWx0YS5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChHcm93RmFpbFJlYXNvbjo6SW52YWxpZERlbHRhKTsKLSAgICAKKwor
ICAgIGlmIChzaGFyaW5nTW9kZSgpID09IE1lbW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQpCisgICAg
ICAgIHJldHVybiBncm93U2hhcmVkKGRlbHRhKTsKKworICAgIGNvbnN0IFdhc206OlBhZ2VDb3Vu
dCBvbGRQYWdlQ291bnQgPSBzaXplSW5QYWdlcygpOwogICAgIGNvbnN0IFdhc206OlBhZ2VDb3Vu
dCBuZXdQYWdlQ291bnQgPSBvbGRQYWdlQ291bnQgKyBkZWx0YTsKICAgICBpZiAoIW5ld1BhZ2VD
b3VudCB8fCAhbmV3UGFnZUNvdW50LmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpJbnZhbGlkR3Jvd1NpemUpOwpAQCAtMzkxLDUyICs1NDMs
NTggQEAgRXhwZWN0ZWQ8UGFnZUNvdW50LCBNZW1vcnk6Okdyb3dGYWlsUmVhc29uPiBNZW1vcnk6
Omdyb3coUGFnZUNvdW50IGRlbHRhKQogICAgICAgICByZXR1cm4gc3VjY2VzcygpOwogCiAgICAg
ZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1lbW9yeTo6Z3JvdygiLCBkZWx0YSwgIikgdG8gIiwgbmV3
UGFnZUNvdW50LCAiIGZyb20gIiwgKnRoaXMpOwotICAgIFJFTEVBU0VfQVNTRVJUKG5ld1BhZ2VD
b3VudCA+IFBhZ2VDb3VudDo6ZnJvbUJ5dGVzKG1fc2l6ZSkpOworICAgIFJFTEVBU0VfQVNTRVJU
KG5ld1BhZ2VDb3VudCA+IFBhZ2VDb3VudDo6ZnJvbUJ5dGVzKHNpemUoKSkpOwogCiAgICAgaWYg
KG1heGltdW0oKSAmJiBuZXdQYWdlQ291bnQgPiBtYXhpbXVtKCkpCiAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChHcm93RmFpbFJlYXNvbjo6V291bGRFeGNlZWRNYXhpbXVtKTsKIAogICAg
IHNpemVfdCBkZXNpcmVkU2l6ZSA9IG5ld1BhZ2VDb3VudC5ieXRlcygpOwogICAgIFJFTEVBU0Vf
QVNTRVJUKGRlc2lyZWRTaXplIDw9IE1BWF9BUlJBWV9CVUZGRVJfU0laRSk7Ci0gICAgUkVMRUFT
RV9BU1NFUlQoZGVzaXJlZFNpemUgPiBtX3NpemUpOwotICAgIHNpemVfdCBleHRyYUJ5dGVzID0g
ZGVzaXJlZFNpemUgLSBtX3NpemU7Ci0gICAgUkVMRUFTRV9BU1NFUlQoZXh0cmFCeXRlcyk7Ci0g
ICAgYm9vbCBhbGxvY2F0aW9uU3VjY2VzcyA9IHRyeUFsbG9jYXRlKAotICAgICAgICBbJl0gKCkg
LT4gTWVtb3J5UmVzdWx0OjpLaW5kIHsKLSAgICAgICAgICAgIHJldHVybiBtZW1vcnlNYW5hZ2Vy
KCkudHJ5QWxsb2NhdGVQaHlzaWNhbEJ5dGVzKGV4dHJhQnl0ZXMpOwotICAgICAgICB9LCBtX25v
dGlmeU1lbW9yeVByZXNzdXJlLCBtX3N5bmNUcnlUb1JlY2xhaW1NZW1vcnkpOwotICAgIGlmICgh
YWxsb2NhdGlvblN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChHcm93RmFp
bFJlYXNvbjo6T3V0T2ZNZW1vcnkpOwotCisgICAgUkVMRUFTRV9BU1NFUlQoZGVzaXJlZFNpemUg
PiBzaXplKCkpOwogICAgIHN3aXRjaCAobW9kZSgpKSB7CiAgICAgY2FzZSBNZW1vcnlNb2RlOjpC
b3VuZHNDaGVja2luZzogeworICAgICAgICBib29sIGFsbG9jYXRpb25TdWNjZXNzID0gdHJ5QWxs
b2NhdGUoCisgICAgICAgICAgICBbJl0gKCkgLT4gTWVtb3J5UmVzdWx0OjpLaW5kIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbWVtb3J5TWFuYWdlcigpLnRyeUFsbG9jYXRlUGh5c2ljYWxCeXRl
cyhkZXNpcmVkU2l6ZSk7CisgICAgICAgICAgICB9LCBtX25vdGlmeU1lbW9yeVByZXNzdXJlLCBt
X3N5bmNUcnlUb1JlY2xhaW1NZW1vcnkpOworICAgICAgICBpZiAoIWFsbG9jYXRpb25TdWNjZXNz
KQorICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpPdXRP
Zk1lbW9yeSk7CisKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobWF4aW11bSgpLmJ5dGVzKCkgIT0g
MCk7CiAKICAgICAgICAgdm9pZCogbmV3TWVtb3J5ID0gR2lnYWNhZ2U6OnRyeUFsbG9jYXRlWmVy
b2VkVmlydHVhbFBhZ2VzKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGRlc2lyZWRTaXplKTsKICAgICAg
ICAgaWYgKCFuZXdNZW1vcnkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoR3Jv
d0ZhaWxSZWFzb246Ok91dE9mTWVtb3J5KTsKIAotICAgICAgICBtZW1jcHkobmV3TWVtb3J5LCBt
ZW1vcnkoKSwgbV9zaXplKTsKLSAgICAgICAgaWYgKG1fbWVtb3J5KQotICAgICAgICAgICAgR2ln
YWNhZ2U6OmZyZWVWaXJ0dWFsUGFnZXMoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgbWVtb3J5KCksIG1f
c2l6ZSk7Ci0gICAgICAgIG1fbWVtb3J5ID0gQ2FnZWRNZW1vcnkobmV3TWVtb3J5LCBkZXNpcmVk
U2l6ZSk7Ci0gICAgICAgIG1fbWFwcGVkQ2FwYWNpdHkgPSBkZXNpcmVkU2l6ZTsKLSAgICAgICAg
bV9zaXplID0gZGVzaXJlZFNpemU7CisgICAgICAgIG1lbWNweShuZXdNZW1vcnksIG1lbW9yeSgp
LCBzaXplKCkpOworICAgICAgICBhdXRvIG5ld0hhbmRsZSA9IGFkb3B0UmVmKCpuZXcgTWVtb3J5
SGFuZGxlKG5ld01lbW9yeSwgZGVzaXJlZFNpemUsIGRlc2lyZWRTaXplLCBpbml0aWFsKCksIG1h
eGltdW0oKSwgc2hhcmluZ01vZGUoKSwgTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKTsKKyAg
ICAgICAgbV9oYW5kbGUgPSBXVEZNb3ZlKG5ld0hhbmRsZSk7CisKICAgICAgICAgQVNTRVJUKG1l
bW9yeSgpID09IG5ld01lbW9yeSk7CiAgICAgICAgIHJldHVybiBzdWNjZXNzKCk7CiAgICAgfQog
ICAgIGNhc2UgTWVtb3J5TW9kZTo6U2lnbmFsaW5nOiB7CisgICAgICAgIHNpemVfdCBleHRyYUJ5
dGVzID0gZGVzaXJlZFNpemUgLSBzaXplKCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4dHJh
Qnl0ZXMpOworICAgICAgICBib29sIGFsbG9jYXRpb25TdWNjZXNzID0gdHJ5QWxsb2NhdGUoCisg
ICAgICAgICAgICBbJl0gKCkgLT4gTWVtb3J5UmVzdWx0OjpLaW5kIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbWVtb3J5TWFuYWdlcigpLnRyeUFsbG9jYXRlUGh5c2ljYWxCeXRlcyhleHRyYUJ5
dGVzKTsKKyAgICAgICAgICAgIH0sIG1fbm90aWZ5TWVtb3J5UHJlc3N1cmUsIG1fc3luY1RyeVRv
UmVjbGFpbU1lbW9yeSk7CisgICAgICAgIGlmICghYWxsb2NhdGlvblN1Y2Nlc3MpCisgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoR3Jvd0ZhaWxSZWFzb246Ok91dE9mTWVtb3J5KTsK
KwogICAgICAgICBSRUxFQVNFX0FTU0VSVChtZW1vcnkoKSk7CisKICAgICAgICAgLy8gU2lnbmFs
aW5nIG1lbW9yeSBtdXN0IGhhdmUgYmVlbiBwcmUtYWxsb2NhdGVkIHZpcnR1YWxseS4KLSAgICAg
ICAgdWludDhfdCogc3RhcnRBZGRyZXNzID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1lbW9yeSgp
KSArIG1fc2l6ZTsKKyAgICAgICAgdWludDhfdCogc3RhcnRBZGRyZXNzID0gc3RhdGljX2Nhc3Q8
dWludDhfdCo+KG1lbW9yeSgpKSArIHNpemUoKTsKICAgICAgICAgCiAgICAgICAgIGRhdGFMb2dM
bklmKHZlcmJvc2UsICJNYXJraW5nIFdlYkFzc2VtYmx5IG1lbW9yeSdzICIsIFJhd1BvaW50ZXIo
bWVtb3J5KCkpLCAiIGFzIHJlYWQrd3JpdGUgaW4gcmFuZ2UgWyIsIFJhd1BvaW50ZXIoc3RhcnRB
ZGRyZXNzKSwgIiwgIiwgUmF3UG9pbnRlcihzdGFydEFkZHJlc3MgKyBleHRyYUJ5dGVzKSwgIiki
KTsKICAgICAgICAgaWYgKG1wcm90ZWN0KHN0YXJ0QWRkcmVzcywgZXh0cmFCeXRlcywgUFJPVF9S
RUFEIHwgUFJPVF9XUklURSkpIHsKICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxl
ZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9tZW1vcnkucmVjYWdlKG1fc2l6
ZSwgZGVzaXJlZFNpemUpOwotICAgICAgICBtX3NpemUgPSBkZXNpcmVkU2l6ZTsKKworICAgICAg
ICBtX2hhbmRsZS0+Z3Jvd1RvU2l6ZShkZXNpcmVkU2l6ZSk7CiAgICAgICAgIHJldHVybiBzdWNj
ZXNzKCk7CiAgICAgfQogICAgIH0KQEAgLTQ1OSw3ICs2MTcsOCBAQCB2b2lkIE1lbW9yeTo6cmVn
aXN0ZXJJbnN0YW5jZShJbnN0YW5jZSogaW5zdGFuY2UpCiAKIHZvaWQgTWVtb3J5OjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KCJNZW1vcnkgYXQgIiwgUmF3
UG9pbnRlcihtZW1vcnkoKSksICIsIHNpemUgIiwgbV9zaXplLCAiQiBjYXBhY2l0eSAiLCBtX21h
cHBlZENhcGFjaXR5LCAiQiwgaW5pdGlhbCAiLCBtX2luaXRpYWwsICIgbWF4aW11bSAiLCBtX21h
eGltdW0sICIgbW9kZSAiLCBtYWtlU3RyaW5nKG1fbW9kZSkpOworICAgIGF1dG8gaGFuZGxlID0g
bV9oYW5kbGUuY29weVJlZigpOworICAgIG91dC5wcmludCgiTWVtb3J5IGF0ICIsIFJhd1BvaW50
ZXIoaGFuZGxlLT5tZW1vcnkoKSksICIsIHNpemUgIiwgaGFuZGxlLT5zaXplKCksICJCIGNhcGFj
aXR5ICIsIGhhbmRsZS0+bWFwcGVkQ2FwYWNpdHkoKSwgIkIsIGluaXRpYWwgIiwgaGFuZGxlLT5p
bml0aWFsKCksICIgbWF4aW11bSAiLCBoYW5kbGUtPm1heGltdW0oKSwgIiBtb2RlICIsIG1ha2VT
dHJpbmcoaGFuZGxlLT5tb2RlKCkpLCAiIHNoYXJpbmdNb2RlICIsIG1ha2VTdHJpbmcoaGFuZGxl
LT5zaGFyaW5nTW9kZSgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU1lbW9yeS5oCmluZGV4IDk2NzA4MzhmMTcxMWY4MmU3YmI0ZTE1YmY4
YjVkZDNiODQ4MjZiNTEuLmQyMTc5ZmMwMDc3ZjJjMjJmMGExMjYyY2U2NzViNzg3ZjBjNTNhOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmgKQEAgLTQ0LDM5ICs0NCw4
MCBAQCBjbGFzcyBQcmludFN0cmVhbTsKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKKwogbmFtZXNwYWNlIFdhc20gewogCiBjbGFzcyBJbnN0YW5jZTsK
IAotY2xhc3MgTWVtb3J5IDogcHVibGljIFJlZkNvdW50ZWQ8TWVtb3J5PiB7CitjbGFzcyBNZW1v
cnlIYW5kbGUgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TWVtb3J5SGFuZGxl
PiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVtb3J5SGFuZGxlKTsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKKyAgICBmcmllbmQgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworcHVi
bGljOgorICAgIE1lbW9yeUhhbmRsZSh2b2lkKiwgc2l6ZV90IHNpemUsIHNpemVfdCBtYXBwZWRD
YXBhY2l0eSwgUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBNZW1vcnlTaGFy
aW5nTW9kZSBzaGFyaW5nTW9kZSwgTWVtb3J5TW9kZSBtb2RlKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSB+TWVtb3J5SGFuZGxlKCk7CisKKyAgICB2b2lkKiBtZW1vcnkoKSBjb25zdCB7IEFTU0VS
VChtX21lbW9yeS5nZXRNYXlCZU51bGwobV9tYXBwZWRDYXBhY2l0eSkgPT0gbV9tZW1vcnkuZ2V0
VW5zYWZlKCkpOyByZXR1cm4gbV9tZW1vcnkuZ2V0TWF5QmVOdWxsKG1fbWFwcGVkQ2FwYWNpdHkp
OyB9CisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBzaXpl
X3QgbWFwcGVkQ2FwYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX21hcHBlZENhcGFjaXR5OyB9Cisg
ICAgUGFnZUNvdW50IGluaXRpYWwoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWw7IH0KKyAgICBQ
YWdlQ291bnQgbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11bTsgfQorICAgIE1lbW9y
eVNoYXJpbmdNb2RlIHNoYXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyaW5nTW9kZTsg
fQorICAgIE1lbW9yeU1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQorICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTaXplKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1l
bW9yeUhhbmRsZSwgbV9zaXplKTsgfQorICAgIExvY2smIGxvY2soKSB7IHJldHVybiBtX2xvY2s7
IH0KKworICAgIHZvaWQgZ3Jvd1RvU2l6ZShzaXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIG1f
c2l6ZSA9IHNpemU7CisgICAgfQorCitwcml2YXRlOgorICAgIHVzaW5nIENhZ2VkTWVtb3J5ID0g
Q2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OworICAgIENh
Z2VkTWVtb3J5IG1fbWVtb3J5OworICAgIHNpemVfdCBtX3NpemUgeyAwIH07CisgICAgc2l6ZV90
IG1fbWFwcGVkQ2FwYWNpdHkgeyAwIH07CisgICAgUGFnZUNvdW50IG1faW5pdGlhbDsKKyAgICBQ
YWdlQ291bnQgbV9tYXhpbXVtOworICAgIE1lbW9yeVNoYXJpbmdNb2RlIG1fc2hhcmluZ01vZGUg
eyBNZW1vcnlTaGFyaW5nTW9kZTo6RGVmYXVsdCB9OworICAgIE1lbW9yeU1vZGUgbV9tb2RlIHsg
TWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcgfTsKKyAgICBMb2NrIG1fbG9jazsKK307CisKK2Ns
YXNzIE1lbW9yeSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lbW9yeT4gewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKE1lbW9yeSk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Cisg
ICAgZnJpZW5kIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHB1YmxpYzoKICAgICB2b2lkIGR1bXAo
V1RGOjpQcmludFN0cmVhbSYpIGNvbnN0OwogCi0gICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0IHsgcmV0dXJuICEhbV9tZW1vcnk7IH0KKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29s
KCkgY29uc3QgeyByZXR1cm4gISFtX2hhbmRsZS0+bWVtb3J5KCk7IH0KICAgICAKICAgICBlbnVt
IE5vdGlmeVByZXNzdXJlIHsgTm90aWZ5UHJlc3N1cmVUYWcgfTsKICAgICBlbnVtIFN5bmNUcnlU
b1JlY2xhaW0geyBTeW5jVHJ5VG9SZWNsYWltVGFnIH07CiAgICAgZW51bSBHcm93U3VjY2VzcyB7
IEdyb3dTdWNjZXNzVGFnIH07CiAKICAgICBzdGF0aWMgUmVmPE1lbW9yeT4gY3JlYXRlKCk7Ci0g
ICAgc3RhdGljIFJlZlB0cjxNZW1vcnk+IHRyeUNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwgUGFn
ZUNvdW50IG1heGltdW0sIFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90
aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4m
JiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3Ms
IFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPE1lbW9yeT4gY3JlYXRlKFJlZjxNZW1vcnlIYW5kbGU+
JiYsIFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJl
c3N1cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9S
ZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwg
UGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBzdGF0aWMgUmVmUHRyPE1l
bW9yeT4gdHJ5Q3JlYXRlKFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgTWVt
b3J5U2hhcmluZ01vZGUsIFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90
aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4m
JiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3Ms
IFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKTsKIAotICAgIH5N
ZW1vcnkoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB+TWVtb3J5KCk7CiAKICAgICBzdGF0aWMg
c2l6ZV90IGZhc3RNYXBwZWRSZWR6b25lQnl0ZXMoKTsKICAgICBzdGF0aWMgc2l6ZV90IGZhc3RN
YXBwZWRCeXRlcygpOyAvLyBJbmNsdWRlcyByZWR6b25lLgotICAgIHN0YXRpYyBib29sIGFkZHJl
c3NJc0luQWN0aXZlRmFzdE1lbW9yeSh2b2lkKik7Ci0KLSAgICB2b2lkKiBtZW1vcnkoKSBjb25z
dCB7IEFTU0VSVChtX21lbW9yeS5nZXRNYXlCZU51bGwoc2l6ZSgpKSA9PSBtX21lbW9yeS5nZXRV
bnNhZmUoKSk7IHJldHVybiBtX21lbW9yeS5nZXRNYXlCZU51bGwoc2l6ZSgpKTsgfQotICAgIHNp
emVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAgUGFnZUNvdW50IHNpemVJ
blBhZ2VzKCkgY29uc3QgeyByZXR1cm4gUGFnZUNvdW50Ojpmcm9tQnl0ZXMobV9zaXplKTsgfQor
ICAgIHN0YXRpYyBib29sIGFkZHJlc3NJc0luQWN0aXZlR3Jvd2FibGVNZW1vcnkodm9pZCopOwog
Ci0gICAgUGFnZUNvdW50IGluaXRpYWwoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWw7IH0KLSAg
ICBQYWdlQ291bnQgbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11bTsgfQorICAgIHZv
aWQqIG1lbW9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlLT5tZW1vcnkoKTsgfQorICAgIHNp
emVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUtPnNpemUoKTsgfQorICAgIFBhZ2VD
b3VudCBzaXplSW5QYWdlcygpIGNvbnN0IHsgcmV0dXJuIFBhZ2VDb3VudDo6ZnJvbUJ5dGVzKHNp
emUoKSk7IH0KKyAgICBzaXplX3QgYm91bmRzQ2hlY2tpbmdTaXplKCkgY29uc3QgeyByZXR1cm4g
bV9oYW5kbGUtPm1hcHBlZENhcGFjaXR5KCk7IH0KKyAgICBQYWdlQ291bnQgaW5pdGlhbCgpIGNv
bnN0IHsgcmV0dXJuIG1faGFuZGxlLT5pbml0aWFsKCk7IH0KKyAgICBQYWdlQ291bnQgbWF4aW11
bSgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlLT5tYXhpbXVtKCk7IH0KKyAgICBNZW1vcnlIYW5k
bGUmIGhhbmRsZSgpIHsgcmV0dXJuIG1faGFuZGxlLmdldCgpOyB9CiAKLSAgICBNZW1vcnlNb2Rl
IG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KKyAgICBNZW1vcnlTaGFyaW5nTW9kZSBz
aGFyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlLT5zaGFyaW5nTW9kZSgpOyB9Cisg
ICAgTWVtb3J5TW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUtPm1vZGUoKTsgfQog
CiAgICAgZW51bSBjbGFzcyBHcm93RmFpbFJlYXNvbiB7CiAgICAgICAgIEludmFsaWREZWx0YSwK
QEAgLTg5LDIxICsxMzAsMTYgQEAgY2xhc3MgTWVtb3J5IDogcHVibGljIFJlZkNvdW50ZWQ8TWVt
b3J5PiB7CiAKICAgICB2b2lkIGNoZWNrKCkgeyAgQVNTRVJUKCFkZWxldGlvbkhhc0JlZ3VuKCkp
OyB9CiAKLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTWVtb3J5KCkgeyByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKE1lbW9yeSwgbV9tZW1vcnkpOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZlNpemUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTWVtb3J5LCBtX3NpemUpOyB9
CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkhhbmRsZSgpIHsgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihNZW1vcnksIG1faGFuZGxlKTsgfQogCiBwcml2YXRlOgogICAgIE1lbW9yeSgpOwot
ICAgIE1lbW9yeSh2b2lkKiBtZW1vcnksIFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4
aW11bSwgc2l6ZV90IG1hcHBlZENhcGFjaXR5LCBNZW1vcnlNb2RlLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpG
dW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1
Y2Nlc3NDYWxsYmFjayk7Ci0gICAgTWVtb3J5KFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQg
bWF4aW11bSwgV1RGOjpGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1v
cnlQcmVzc3VyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNU
cnlUb1JlY2xhaW1NZW1vcnksIFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNv
dW50LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNjZXNzQ2FsbGJhY2spOworICAgIE1lbW9yeShSZWY8
TWVtb3J5SGFuZGxlPiYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5v
dGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+
JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNz
LCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayk7CisgICAgTWVt
b3J5KFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgTWVtb3J5U2hhcmluZ01v
ZGUsIFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJl
c3N1cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9S
ZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwg
UGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKTsKIAotICAgIHVzaW5nIENhZ2VkTWVt
b3J5ID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+Owot
ICAgIENhZ2VkTWVtb3J5IG1fbWVtb3J5OwotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAg
UGFnZUNvdW50IG1faW5pdGlhbDsKLSAgICBQYWdlQ291bnQgbV9tYXhpbXVtOwotICAgIHNpemVf
dCBtX21hcHBlZENhcGFjaXR5IHsgMCB9OwotICAgIE1lbW9yeU1vZGUgbV9tb2RlIHsgTWVtb3J5
TW9kZTo6Qm91bmRzQ2hlY2tpbmcgfTsKKyAgICBFeHBlY3RlZDxQYWdlQ291bnQsIEdyb3dGYWls
UmVhc29uPiBncm93U2hhcmVkKFBhZ2VDb3VudCk7CisKKyAgICBSZWY8TWVtb3J5SGFuZGxlPiBt
X2hhbmRsZTsKICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiBtX25vdGlm
eU1lbW9yeVByZXNzdXJlOwogICAgIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWlt
KT4gbV9zeW5jVHJ5VG9SZWNsYWltTWVtb3J5OwogICAgIFdURjo6RnVuY3Rpb248dm9pZChHcm93
U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiBtX2dyb3dTdWNjZXNzQ2FsbGJhY2s7CkBA
IC0xMTksNyArMTU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIGNsYXNz
IE1lbW9yeSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHNpemVfdCBtYXhGYXN0TWVtb3J5Q291bnQo
KSB7IHJldHVybiAwOyB9Ci0gICAgc3RhdGljIGJvb2wgYWRkcmVzc0lzSW5BY3RpdmVGYXN0TWVt
b3J5KHZvaWQqKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBib29sIGFkZHJlc3NJc0lu
QWN0aXZlR3Jvd2FibGVNZW1vcnkodm9pZCopIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6V2FzbQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAKaW5kZXggNmI0YzJkMWZkNzM4NGQ3ZGNhMzAz
MThkNzJjMWY1NjExOWY1ZjU2MC4uZjJjNmZhNTA4OTg4YzBjNDkwODAzNzE4MzIxNjg3MWU4NTQw
Y2ZlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUlu
Zm9ybWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5
SW5mb3JtYXRpb24uY3BwCkBAIC00MiwxOSArNDIsMTkgQEAgY29uc3QgUGlubmVkUmVnaXN0ZXJJ
bmZvJiBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpCiAgICAgICAgIGlmICghQ29udGV4dDo6dXNl
RmFzdFRMUygpKQogICAgICAgICAgICAgKytudW1iZXJPZlBpbm5lZFJlZ2lzdGVyczsKICAgICAg
ICAgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyID0gR1BSSW5mbzo6cmVnQ1MzOwotICAgICAgICBH
UFJSZWcgc2l6ZVJlZ2lzdGVyID0gR1BSSW5mbzo6cmVnQ1M0OworICAgICAgICBHUFJSZWcgYm91
bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgPSBHUFJJbmZvOjpyZWdDUzQ7CiAgICAgICAgIEdQUlJl
ZyB3YXNtQ29udGV4dEluc3RhbmNlUG9pbnRlciA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIGlm
ICghQ29udGV4dDo6dXNlRmFzdFRMUygpKQogICAgICAgICAgICAgd2FzbUNvbnRleHRJbnN0YW5j
ZVBvaW50ZXIgPSBHUFJJbmZvOjpyZWdDUzA7CiAKLSAgICAgICAgc3RhdGljUGlubmVkUmVnaXN0
ZXJJbmZvLmNvbnN0cnVjdChzaXplUmVnaXN0ZXIsIGJhc2VNZW1vcnlQb2ludGVyLCB3YXNtQ29u
dGV4dEluc3RhbmNlUG9pbnRlcik7CisgICAgICAgIHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mby5j
b25zdHJ1Y3QoYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIsIGJhc2VNZW1vcnlQb2ludGVyLCB3
YXNtQ29udGV4dEluc3RhbmNlUG9pbnRlcik7CiAgICAgfSk7CiAKICAgICByZXR1cm4gc3RhdGlj
UGlubmVkUmVnaXN0ZXJJbmZvLmdldCgpOwogfQogCi1QaW5uZWRSZWdpc3RlckluZm86OlBpbm5l
ZFJlZ2lzdGVySW5mbyhHUFJSZWcgc2l6ZVJlZ2lzdGVyLCBHUFJSZWcgYmFzZU1lbW9yeVBvaW50
ZXIsIEdQUlJlZyB3YXNtQ29udGV4dEluc3RhbmNlUG9pbnRlcikKLSAgICA6IHNpemVSZWdpc3Rl
cihzaXplUmVnaXN0ZXIpCitQaW5uZWRSZWdpc3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyhH
UFJSZWcgYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIsIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRl
ciwgR1BSUmVnIHdhc21Db250ZXh0SW5zdGFuY2VQb2ludGVyKQorICAgIDogYm91bmRzQ2hlY2tp
bmdTaXplUmVnaXN0ZXIoYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIpCiAgICAgLCBiYXNlTWVt
b3J5UG9pbnRlcihiYXNlTWVtb3J5UG9pbnRlcikKICAgICAsIHdhc21Db250ZXh0SW5zdGFuY2VQ
b2ludGVyKHdhc21Db250ZXh0SW5zdGFuY2VQb2ludGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uaAppbmRleCA0YjhlZjhlOGJj
N2FjN2VmYzlhNzk5NDk0ZTI2ODkxZmE4ZGQ2MjlmLi4yM2E4NjUzMGJhZTEwZmRmN2UwZDQyZTM1
YWI5MDc3YmI3M2RmNjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTWVtb3J5SW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTWVtb3J5SW5mb3JtYXRpb24uaApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBXYXNtIHsKIAogc3RydWN0IFBpbm5lZFNpemVSZWdpc3RlckluZm8gewotICAg
IEdQUlJlZyBzaXplUmVnaXN0ZXI7CisgICAgR1BSUmVnIGJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lz
dGVyOwogICAgIHVuc2lnbmVkIHNpemVPZmZzZXQ7CiB9OwogCkBAIC01NiwxMSArNTYsMTEgQEAg
Y2xhc3MgUGlubmVkUmVnaXN0ZXJJbmZvIHsKICAgICAgICAgaWYgKHdhc21Db250ZXh0SW5zdGFu
Y2VQb2ludGVyICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgICAgICByZXN1bHQuc2V0KHdhc21D
b250ZXh0SW5zdGFuY2VQb2ludGVyKTsKICAgICAgICAgaWYgKG1vZGUgIT0gTWVtb3J5TW9kZTo6
U2lnbmFsaW5nKQotICAgICAgICAgICAgcmVzdWx0LnNldChzaXplUmVnaXN0ZXIpOworICAgICAg
ICAgICAgcmVzdWx0LnNldChib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgR1BSUmVnIHNpemVSZWdpc3RlcjsKKyAgICBHUFJS
ZWcgYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXI7CiAgICAgR1BSUmVnIGJhc2VNZW1vcnlQb2lu
dGVyOwogICAgIEdQUlJlZyB3YXNtQ29udGV4dEluc3RhbmNlUG9pbnRlcjsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5TW9kZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5TW9kZS5jcHAKaW5kZXggYjFiYzk4NWRk
NzZiYmZmYjVkMmJiNWEzZDEwOGMwNjdhNDczNzcyZC4uOWFkOGY4MGI2YWEyMmJmZjAzMmJkZDQ2
ZDE3ODZlZmNkZWYzY2M0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU1lbW9yeU1vZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21N
ZW1vcnlNb2RlLmNwcApAQCAtNDIsNiArNDIsMTYgQEAgY29uc3QgY2hhciogbWFrZVN0cmluZyhN
ZW1vcnlNb2RlIG1vZGUpCiAgICAgcmV0dXJuICIiOwogfQogCitjb25zdCBjaGFyKiBtYWtlU3Ry
aW5nKE1lbW9yeVNoYXJpbmdNb2RlIHNoYXJpbmdNb2RlKQoreworICAgIHN3aXRjaCAoc2hhcmlu
Z01vZGUpIHsKKyAgICBjYXNlIE1lbW9yeVNoYXJpbmdNb2RlOjpEZWZhdWx0OiByZXR1cm4gIkRl
ZmF1bHQiOworICAgIGNhc2UgTWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZDogcmV0dXJuICJTaGFy
ZWQiOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biAiIjsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21NZW1vcnlNb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5TW9k
ZS5oCmluZGV4IGMwMzg3NDZkNjFkNDJhOTUzY2NmNGI1ZDBmYjIwNzVlOTI2NTQxZjguLjUxYjIx
MzM2Yzg5NDZiZGViODdjZjEzOTVhZDk5NzUzMTM1MTU4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlNb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU1lbW9yeU1vZGUuaApAQCAtNDAsNiArNDAsMTMgQEAgZW51bSBjbGFz
cyBNZW1vcnlNb2RlIDogdWludDhfdCB7CiBzdGF0aWMgY29uc3RleHByIHNpemVfdCBOdW1iZXJP
Zk1lbW9yeU1vZGVzID0gMjsKIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IGNoYXIqIG1ha2VTdHJp
bmcoTWVtb3J5TW9kZSk7CiAKK2VudW0gY2xhc3MgTWVtb3J5U2hhcmluZ01vZGUgOiB1aW50OF90
IHsKKyAgICBEZWZhdWx0LAorICAgIFNoYXJlZCwKK307CisKK0pTX0VYUE9SVF9QUklWQVRFIGNv
bnN0IGNoYXIqIG1ha2VTdHJpbmcoTWVtb3J5U2hhcmluZ01vZGUpOworCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6V2FzbQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCmluZGV4IGQ4ZDE1MjE0ZDQwZjBhODVj
MzFmMmEyYjI5MmY4MzVkM2YzNjlkNjYuLmJlOTQ4NzRhNWE0YjQ1N2QyMzJlZmQ4OGQ3NzlkMWJi
M2Q5YjNmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9X
YXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAK
QEAgLTIyMSw3ICsyMjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3Jl
YXRlSlNUb1dhc21XcmFwcGVyKENDYWxsSGVscGVycyYgaml0LCBjb25zdAogCiAgICAgaWYgKCEh
aW5mby5tZW1vcnkpIHsKICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJh
c2VNZW1vcnlQb2ludGVyOwotICAgICAgICBHUFJSZWcgc2NyYXRjaE9yU2l6ZSA9IHdhc21DYWxs
aW5nQ29udmVudGlvbigpLnByb2xvZ3VlU2NyYXRjaEdQUnNbMF07CisgICAgICAgIEdQUlJlZyBz
Y3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUgPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5wcm9s
b2d1ZVNjcmF0Y2hHUFJzWzBdOwogCiAgICAgICAgIGlmIChDb250ZXh0Ojp1c2VGYXN0VExTKCkp
CiAgICAgICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0SW5zdGFuY2UoYmFzZU1lbW9yeSk7CkBA
IC0yMjksMTUgKzIyOSwxNSBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3Jl
YXRlSlNUb1dhc21XcmFwcGVyKENDYWxsSGVscGVycyYgaml0LCBjb25zdAogICAgICAgICBHUFJS
ZWcgY3VycmVudEluc3RhbmNlR1BSID0gQ29udGV4dDo6dXNlRmFzdFRMUygpID8gYmFzZU1lbW9y
eSA6IHdhc21Db250ZXh0SW5zdGFuY2VHUFI7CiAgICAgICAgIGlmIChpc0FSTTY0RSgpKSB7CiAg
ICAgICAgICAgICBpZiAobW9kZSAhPSBXYXNtOjpNZW1vcnlNb2RlOjpTaWduYWxpbmcpCi0gICAg
ICAgICAgICAgICAgc2NyYXRjaE9yU2l6ZSA9IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyOwotICAg
ICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGN1cnJlbnRJbnN0YW5j
ZUdQUiwgV2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSwgc2NyYXRj
aE9yU2l6ZSk7CisgICAgICAgICAgICAgICAgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplID0g
cGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlcjsKKyAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjdXJyZW50SW5zdGFuY2VHUFIsIFdhc206Oklu
c3RhbmNlOjpvZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpKSwgc2NyYXRjaE9yQm91
bmRzQ2hlY2tpbmdTaXplKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChtb2Rl
ICE9IFdhc206Ok1lbW9yeU1vZGU6OlNpZ25hbGluZykKLSAgICAgICAgICAgICAgICBqaXQubG9h
ZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY3VycmVudEluc3RhbmNlR1BSLCBXYXNtOjpJbnN0
YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rl
cik7CisgICAgICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGN1
cnJlbnRJbnN0YW5jZUdQUiwgV2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hl
Y2tpbmdTaXplKCkpLCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjdXJy
ZW50SW5zdGFuY2VHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwg
YmFzZU1lbW9yeSk7Ci0gICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJp
bWl0aXZlLCBiYXNlTWVtb3J5LCBzY3JhdGNoT3JTaXplLCBzY3JhdGNoT3JTaXplKTsKKyAgICAg
ICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnks
IHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSwgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXpl
KTsKICAgICB9CiAKICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC50aHJlYWRTYWZl
UGF0Y2hhYmxlTmVhckNhbGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCmluZGV4IDY2OTYxYzIzMmE0ZWE0ZTQ3
NGY2NzczOTMyMzJjZDFlYTJlYzRjNTkuLmU0OWZjNjkyNWE5OTVlNWUwYWY1OWJlZjNlNjAyMGZi
ZDQwM2JhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcApAQCAtMjkxLDcgKzI5MSw3IEBAIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSogSlNXZWJBc3NlbWJseUluc3RhbmNlOjp0cnlDcmVhdGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCoKICAgICAgICAgICAgIGF1dG8qIGpzTWVtb3J5ID0gSlNXZWJBc3NlbWJseU1l
bW9yeTo6dHJ5Q3JlYXRlKGdsb2JhbE9iamVjdCwgdm0sIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1i
bHlNZW1vcnlTdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBSZWZQdHI8V2FzbTo6TWVtb3J5PiBt
ZW1vcnkgPSBXYXNtOjpNZW1vcnk6OnRyeUNyZWF0ZShtb2R1bGVJbmZvcm1hdGlvbi5tZW1vcnku
aW5pdGlhbCgpLCBtb2R1bGVJbmZvcm1hdGlvbi5tZW1vcnkubWF4aW11bSgpLAorICAgICAgICAg
ICAgUmVmUHRyPFdhc206Ok1lbW9yeT4gbWVtb3J5ID0gV2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUo
bW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5LmluaXRpYWwoKSwgbW9kdWxlSW5mb3JtYXRpb24ubWVt
b3J5Lm1heGltdW0oKSwgV2FzbTo6TWVtb3J5U2hhcmluZ01vZGU6OkRlZmF1bHQsCiAgICAgICAg
ICAgICAgICAgWyZ2bV0gKFdhc206Ok1lbW9yeTo6Tm90aWZ5UHJlc3N1cmUpIHsgdm0uaGVhcC5j
b2xsZWN0QXN5bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgICAgICAgICBb
JnZtXSAoV2FzbTo6TWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7IHZtLmhlYXAuY29sbGVjdFN5
bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgICAgICAgICBbJnZtLCBqc01l
bW9yeV0gKFdhc206Ok1lbW9yeTo6R3Jvd1N1Y2Nlc3MsIFdhc206OlBhZ2VDb3VudCBvbGRQYWdl
Q291bnQsIFdhc206OlBhZ2VDb3VudCBuZXdQYWdlQ291bnQpIHsganNNZW1vcnktPmdyb3dTdWNj
ZXNzQ2FsbGJhY2sodm0sIG9sZFBhZ2VDb3VudCwgbmV3UGFnZUNvdW50KTsgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3Bw
CmluZGV4IGRmYjAyNzAzMTYzMmUwM2JlM2YzOWI1OGY5OGIzNmU4MmY3MjYyM2YuLmY3YWM2NDQ5
ODIxYmYxMDdhMTRmNzQ4ZDAxMmQxZjI5YzdiNzNlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCkBAIC0zMiw2ICsz
Miw3IEBACiAKICNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZm
ZXIuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtNzIsMTcgKzczLDM0IEBAIEpTV2ViQXNzZW1ibHlNZW1vcnk6OkpTV2ViQXNzZW1ibHlN
ZW1vcnkoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotSlNBcnJheUJ1ZmZl
ciogSlNXZWJBc3NlbWJseU1lbW9yeTo6YnVmZmVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKK0pTQXJyYXlCdWZmZXIqIEpTV2ViQXNzZW1ibHlNZW1vcnk6OmJ1ZmZlcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIGlmIChtX2J1ZmZlcldyYXBwZXIp
Ci0gICAgICAgIHJldHVybiBtX2J1ZmZlcldyYXBwZXIuZ2V0KCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgYXV0byogd3JhcHBlciA9IG1fYnVmZmVyV3JhcHBlci5nZXQoKTsKKyAg
ICBpZiAod3JhcHBlcikgeworICAgICAgICBpZiAobV9tZW1vcnktPnNoYXJpbmdNb2RlKCkgPT0g
V2FzbTo6TWVtb3J5U2hhcmluZ01vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICByZXR1cm4gd3Jh
cHBlcjsKIAotICAgIC8vIFdlIGNhbid0IHVzZSBhIHJlZiBoZXJlIHNpbmNlIGl0IGRvZXNuJ3Qg
aGF2ZSBhIGNvcHkgY29uc3RydWN0b3IuLi4KLSAgICBSZWY8V2FzbTo6TWVtb3J5PiBwcm90ZWN0
ZWRNZW1vcnkgPSBtX21lbW9yeS5nZXQoKTsKLSAgICBhdXRvIGRlc3RydWN0b3IgPSBjcmVhdGVT
aGFyZWRUYXNrPHZvaWQodm9pZCopPihbcHJvdGVjdGVkTWVtb3J5ID0gV1RGTW92ZShwcm90ZWN0
ZWRNZW1vcnkpXSAodm9pZCopIHsgfSk7CisgICAgICAgIEFTU0VSVChtX21lbW9yeS0+c2hhcmlu
Z01vZGUoKSA9PSBXYXNtOjpNZW1vcnlTaGFyaW5nTW9kZTo6U2hhcmVkKTsKKyAgICAgICAgLy8g
SWYgU2hhcmVkQXJyYXlCdWZmZXIncyB1bmRlcmx5aW5nIG1lbW9yeSBpcyBub3QgZ3Jvd24sIHdl
IGNvbnRpbnVlIHVzaW5nIGNhY2hlZCB3cmFwcGVyLgorICAgICAgICBpZiAod3JhcHBlci0+aW1w
bCgpLT5ieXRlTGVuZ3RoKCkgPT0gbWVtb3J5KCkuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJu
IHdyYXBwZXI7CisgICAgfQorCisgICAgUmVmPFdhc206Ok1lbW9yeUhhbmRsZT4gcHJvdGVjdGVk
SGFuZGxlID0gbV9tZW1vcnktPmhhbmRsZSgpOworICAgIGF1dG8gZGVzdHJ1Y3RvciA9IGNyZWF0
ZVNoYXJlZFRhc2s8dm9pZCh2b2lkKik+KFtwcm90ZWN0ZWRIYW5kbGUgPSBXVEZNb3ZlKHByb3Rl
Y3RlZEhhbmRsZSldICh2b2lkKikgeyB9KTsKICAgICBtX2J1ZmZlciA9IEFycmF5QnVmZmVyOjpj
cmVhdGVGcm9tQnl0ZXMobWVtb3J5KCkubWVtb3J5KCksIG1lbW9yeSgpLnNpemUoKSwgV1RGTW92
ZShkZXN0cnVjdG9yKSk7CiAgICAgbV9idWZmZXItPm1ha2VXYXNtTWVtb3J5KCk7Ci0gICAgbV9i
dWZmZXJXcmFwcGVyLnNldCh2bSwgdGhpcywgSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QtPmFycmF5QnVmZmVyU3RydWN0dXJlKEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRl
ZmF1bHQpLCBtX2J1ZmZlci5nZXQoKSkpOworICAgIGlmIChtX21lbW9yeS0+c2hhcmluZ01vZGUo
KSA9PSBXYXNtOjpNZW1vcnlTaGFyaW5nTW9kZTo6U2hhcmVkKQorICAgICAgICBtX2J1ZmZlci0+
bWFrZVNoYXJlZCgpOworICAgIGF1dG8qIGFycmF5QnVmZmVyID0gSlNBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5QnVmZmVyU3RydWN0dXJlKG1fYnVmZmVyLT5zaGFy
aW5nTW9kZSgpKSwgbV9idWZmZXIuZ2V0KCkpOworICAgIGlmIChtX21lbW9yeS0+c2hhcmluZ01v
ZGUoKSA9PSBXYXNtOjpNZW1vcnlTaGFyaW5nTW9kZTo6U2hhcmVkKSB7CisgICAgICAgIG9iamVj
dENvbnN0cnVjdG9yRnJlZXplKGdsb2JhbE9iamVjdCwgYXJyYXlCdWZmZXIpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIG1fYnVmZmVy
V3JhcHBlci5zZXQodm0sIHRoaXMsIGFycmF5QnVmZmVyKTsKICAgICBSRUxFQVNFX0FTU0VSVCht
X2J1ZmZlcldyYXBwZXIpOwogICAgIHJldHVybiBtX2J1ZmZlcldyYXBwZXIuZ2V0KCk7CiB9CkBA
IC0xMTcsNyArMTM1LDggQEAgdm9pZCBKU1dlYkFzc2VtYmx5TWVtb3J5Ojpncm93U3VjY2Vzc0Nh
bGxiYWNrKFZNJiB2bSwgV2FzbTo6UGFnZUNvdW50IG9sZFBhZ2VDb3UKIHsKICAgICAvLyBXZSBu
ZWVkIHRvIGNsZWFyIG91dCB0aGUgb2xkIGFycmF5IGJ1ZmZlciBiZWNhdXNlIGl0IG1pZ2h0IG5v
dyBiZSBwb2ludGluZyB0byBzdGFsZSBtZW1vcnkuCiAgICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAg
ICAgIG1fYnVmZmVyLT5kZXRhY2godm0pOworICAgICAgICBpZiAobV9tZW1vcnktPnNoYXJpbmdN
b2RlKCkgPT0gV2FzbTo6TWVtb3J5U2hhcmluZ01vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICBt
X2J1ZmZlci0+ZGV0YWNoKHZtKTsKICAgICAgICAgbV9idWZmZXIgPSBudWxscHRyOwogICAgICAg
ICBtX2J1ZmZlcldyYXBwZXIuY2xlYXIoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmgKaW5kZXggYWI5YzQ3NDZiM2Nm
YTI1MGQ1MWViY2RmNDJiM2E1ZmRiOWFiNTU1ZC4uZTQ5NDkwMzY5MmU1OTU0MWNmYTc5MDMzNzZh
NDUzMmYwNTYzYTQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseU1lbW9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlNZW1vcnkuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogCi0jaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRl
ICJKU09iamVjdC5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDksMTYgKzQ5LDE2IEBAIGNsYXNzIEpT
V2ViQXNzZW1ibHlNZW1vcnkgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAg
ICAgIHJldHVybiB2bS53ZWJBc3NlbWJseU1lbW9yeVNwYWNlPG1vZGU+KCk7CiAgICAgfQogCi0g
ICAgc3RhdGljIEpTV2ViQXNzZW1ibHlNZW1vcnkqIHRyeUNyZWF0ZShKU0dsb2JhbE9iamVjdCos
IFZNJiwgU3RydWN0dXJlKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTV2ViQXNz
ZW1ibHlNZW1vcnkqIHRyeUNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFZNJiwgU3RydWN0dXJlKik7
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAgICB2b2lkIGFk
b3B0KFJlZjxXYXNtOjpNZW1vcnk+JiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRv
cHQoUmVmPFdhc206Ok1lbW9yeT4mJik7CiAgICAgV2FzbTo6TWVtb3J5JiBtZW1vcnkoKSB7IHJl
dHVybiBtX21lbW9yeS5nZXQoKTsgfQotICAgIEpTQXJyYXlCdWZmZXIqIGJ1ZmZlcihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0Kik7CisgICAgSlNBcnJheUJ1ZmZlciogYnVmZmVyKEpTR2xvYmFsT2Jq
ZWN0Kik7CiAgICAgV2FzbTo6UGFnZUNvdW50IGdyb3coVk0mLCBKU0dsb2JhbE9iamVjdCosIHVp
bnQzMl90IGRlbHRhKTsKLSAgICB2b2lkIGdyb3dTdWNjZXNzQ2FsbGJhY2soVk0mLCBXYXNtOjpQ
YWdlQ291bnQgb2xkUGFnZUNvdW50LCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50KTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGdyb3dTdWNjZXNzQ2FsbGJhY2soVk0mLCBXYXNtOjpQ
YWdlQ291bnQgb2xkUGFnZUNvdW50LCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50KTsKIAog
cHJpdmF0ZToKICAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KFZNJiwgU3RydWN0dXJlKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9u
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24u
Y3BwCmluZGV4IDk5Mjc2YzJkOWU2MjdhZDIxNTNkZGZjYTQ5Yzc3OGUwYzc5YzgzY2EuLjc4ZGE2
ZGMzZjRlYWVhZDNjODAwYWU0MmVjMGU2ODgxNzY1ZTQ2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC0zNTcs
MjAgKzM1NywyMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gV2ViQXNz
ZW1ibHlGdW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3coKQogCiAgICAgaWYgKCEhbW9kdWxl
SW5mb3JtYXRpb24ubWVtb3J5KSB7CiAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVk
UmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKLSAgICAgICAgR1BSUmVnIHNjcmF0Y2hPclNpemUgPSBz
dGFja0xpbWl0R1BSOworICAgICAgICBHUFJSZWcgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXpl
ID0gc3RhY2tMaW1pdEdQUjsKICAgICAgICAgYXV0byBtb2RlID0gaW5zdGFuY2UoKS0+bWVtb3J5
TW9kZSgpOwogCiAgICAgICAgIGlmIChpc0FSTTY0RSgpKSB7CiAgICAgICAgICAgICBpZiAobW9k
ZSAhPSBXYXNtOjpNZW1vcnlNb2RlOjpTaWduYWxpbmcpCi0gICAgICAgICAgICAgICAgc2NyYXRj
aE9yU2l6ZSA9IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyOwotICAgICAgICAgICAgaml0LmxvYWRQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFdhc206Okluc3RhbmNlOjpvZmZz
ZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHNjcmF0Y2hPclNpemUpOworICAgICAgICAgICAgICAg
IHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSA9IHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdT
aXplUmVnaXN0ZXI7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3Moc2NyYXRjaEdQUiwgV2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tp
bmdTaXplKCkpLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgaWYgKG1vZGUgIT0gV2FzbTo6TWVtb3J5TW9kZTo6U2lnbmFsaW5nKQot
ICAgICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNo
R1BSLCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRS
ZWdzLnNpemVSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZEJv
dW5kc0NoZWNraW5nU2l6ZSgpKSwgcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rl
cik7CiAgICAgICAgIH0KIAogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3Moc2NyYXRjaEdQUiwgV2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5KCkpLCBi
YXNlTWVtb3J5KTsKLSAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmlt
aXRpdmUsIGJhc2VNZW1vcnksIHNjcmF0Y2hPclNpemUsIHNjcmF0Y2hPclNpemUpOworICAgICAg
ICBqaXQuY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwg
c2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUp
OwogICAgIH0KIAogICAgIC8vIFdlIHVzZSB0aGlzIGNhbGxlZSB0byBpbmRpY2F0ZSBob3cgdG8g
dW53aW5kIHBhc3QgdGhlc2UgdHlwZXMgb2YgZnJhbWVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9y
LmNwcAppbmRleCA1MGNjY2EyNDFmZDViZTk3OTU2ZGYwODhiOTRhOGQ4YWIwZmYwZDA1Li5hZTA3
NmRjMGEzYzE4ZmVmNzgyNzM4ZTJmNWQ2MzU2YzE4ZGI3OWM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0
cnVjdG9yLmNwcApAQCAtMTAyLDEwICsxMDIsMjMgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlNZW1vcnksIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IK
ICAgICAgICAgfQogICAgIH0KIAorICAgIFdhc206Ok1lbW9yeVNoYXJpbmdNb2RlIHNoYXJpbmdN
b2RlID0gV2FzbTo6TWVtb3J5U2hhcmluZ01vZGU6OkRlZmF1bHQ7CisgICAgSlNWYWx1ZSBzaGFy
ZWRWYWx1ZSA9IG1lbW9yeURlc2NyaXB0b3ItPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJzaGFyZWQiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBib29sIHNoYXJlZCA9IHNoYXJlZFZhbHVl
LnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgaWYgKHNoYXJlZCkgeworICAgICAgICBpZiAo
IW1heGltdW1QYWdlQ291bnQpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsICInbWF4aW11bScgcGFnZSBjb3VudCBtdXN0IGJlIGRl
ZmluZWQgaWYgJ3NoYXJlZCcgaXMgdHJ1ZSJfcyk7CisgICAgICAgIGlmICghT3B0aW9uczo6dXNl
U2hhcmVkQXJyYXlCdWZmZXIoKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIlNoYXJlZCBXZWJBc3NlbWJseS5NZW1vcnkgYW5k
IFNoYXJlZEFycmF5QnVmZmVyIGFyZSBub3QgZW5hYmxlZCJfcyk7CisgICAgICAgIHNoYXJpbmdN
b2RlID0gV2FzbTo6TWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZDsKKyAgICB9CisKICAgICBhdXRv
KiBqc01lbW9yeSA9IEpTV2ViQXNzZW1ibHlNZW1vcnk6OnRyeUNyZWF0ZShnbG9iYWxPYmplY3Qs
IHZtLCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5TWVtb3J5U3RydWN0dXJlKCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBS
ZWZQdHI8V2FzbTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OnRyeUNyZWF0ZShpbml0
aWFsUGFnZUNvdW50LCBtYXhpbXVtUGFnZUNvdW50LAorICAgIFJlZlB0cjxXYXNtOjpNZW1vcnk+
IG1lbW9yeSA9IFdhc206Ok1lbW9yeTo6dHJ5Q3JlYXRlKGluaXRpYWxQYWdlQ291bnQsIG1heGlt
dW1QYWdlQ291bnQsIHNoYXJpbmdNb2RlLAogICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpO
b3RpZnlQcmVzc3VyZSkgeyB2bS5oZWFwLmNvbGxlY3RBc3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1
bGwpOyB9LAogICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7
IHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAg
WyZ2bSwganNNZW1vcnldIChXYXNtOjpNZW1vcnk6Okdyb3dTdWNjZXNzLCBXYXNtOjpQYWdlQ291
bnQgb2xkUGFnZUNvdW50LCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50KSB7IGpzTWVtb3J5
LT5ncm93U3VjY2Vzc0NhbGxiYWNrKHZtLCBvbGRQYWdlQ291bnQsIG5ld1BhZ2VDb3VudCk7IH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
ZW1vcnlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCmluZGV4IGFiNGEyYmZlZWVmYTY4NDE3YzM4Y2MxOTU0
ZTVlOTdmNjJmNjAwOWIuLjdlMjA4YzMxMDFjMjM3MTYzMjI5Y2M1NzkyN2FlYTZiOGYwYjI1ZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVt
b3J5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2IKIAogICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkqIG1lbW9yeSA9IGdldE1lbW9y
eShnbG9iYWxPYmplY3QsIHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsgCiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUobWVtb3J5LT5idWZmZXIoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG1lbW9yeS0+
YnVmZmVyKGdsb2JhbE9iamVjdCkpKTsKIH0KIAogV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUq
IFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDMxYzIxZTNj
NDM3MDJjOTlmYjZmODA5NTRkMGM1ZTQ3N2Q3MGRmN2QuLjlkZDJlN2JmNTIxODdmYjM0NWVlZjBl
N2Y0ZmEyNjM0NWIyZWE0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTU2Niw4ICs1NjYsOSBA
QCBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogICAgIH07CiAKICAgICBhdXRvIGZvckVhY2hTZWdtZW50ID0gWyZd
IChhdXRvIGZuKSB7Ci0gICAgICAgIHVpbnQ4X3QqIG1lbW9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KG1faW5zdGFuY2UtPmluc3RhbmNlKCkuY2FjaGVkTWVtb3J5KCkpOwotICAgICAg
ICB1aW50NjRfdCBzaXplSW5CeXRlcyA9IG1faW5zdGFuY2UtPmluc3RhbmNlKCkuY2FjaGVkTWVt
b3J5U2l6ZSgpOworICAgICAgICBhdXRvIHdhc21NZW1vcnkgPSBtX2luc3RhbmNlLT5pbnN0YW5j
ZSgpLm1lbW9yeSgpOworICAgICAgICB1aW50OF90KiBtZW1vcnkgPSByZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPih3YXNtTWVtb3J5LT5tZW1vcnkoKSk7CisgICAgICAgIHVpbnQ2NF90IHNpemVJ
bkJ5dGVzID0gd2FzbU1lbW9yeS0+c2l6ZSgpOwogCiAgICAgICAgIGZvciAoY29uc3QgV2FzbTo6
U2VnbWVudDo6UHRyJiBzZWdtZW50IDogZGF0YSkgewogICAgICAgICAgICAgdWludDMyX3Qgb2Zm
c2V0ID0gc2VnbWVudC0+b2Zmc2V0LmlzR2xvYmFsSW1wb3J0KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDJkOTli
ZTY0MTNjMzBjMTQwOGY1MzZiYzE4YTIxZWM4NDFhOTc3NjMuLmQ4Y2NmNGNjNmIyZmVlZmMyZjRk
MDczNGRmYjFiZDU0NGYxNzllYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtNzUsNiArNzUsNyBAQAogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTU2V0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNT
ZXRJdGVyYXRvci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTVHlwZWRBcnJheXMuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1dlYkFzc2VtYmx5TWVtb3J5Lmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNXZWJBc3NlbWJseU1vZHVsZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
UHJvcGVydHlOYW1lQXJyYXkuaD4KQEAgLTE4Miw2ICsxODMsOSBAQCBlbnVtIFNlcmlhbGl6YXRp
b25UYWcgewogI2VuZGlmCiAgICAgQmlnSW50VGFnID0gNDcsCiAgICAgQmlnSW50T2JqZWN0VGFn
ID0gNDgsCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIFdhc21NZW1vcnlUYWcgPSA0OSwK
KyNlbmRpZgogICAgIEVycm9yVGFnID0gMjU1CiB9OwogCkBAIC0zNTcsNyArMzYxLDYgQEAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cmluZ0RhdGFJczhCaXRGbGFnID0gMHg4MDAwMDAwMDsKICAq
ICAgIHwgTWVzc2FnZVBvcnRSZWZlcmVuY2VUYWcgPHZhbHVlOnVpbnQzMl90PgogICogICAgfCBB
cnJheUJ1ZmZlcgogICogICAgfCBBcnJheUJ1ZmZlclZpZXdUYWcgQXJyYXlCdWZmZXJWaWV3U3Vi
dGFnIDxieXRlT2Zmc2V0OnVpbnQzMl90PiA8Ynl0ZUxlbmd0aDp1aW50MzJfdD4gKEFycmF5QnVm
ZmVyIHwgT2JqZWN0UmVmZXJlbmNlKQotICogICAgfCBBcnJheUJ1ZmZlclRyYW5zZmVyVGFnIDx2
YWx1ZTp1aW50MzJfdD4KICAqICAgIHwgQ3J5cHRvS2V5VGFnIDx3cmFwcGVkS2V5TGVuZ3RoOnVp
bnQzMl90PiA8ZmFjdG9yOmJ5dGV7d3JhcHBlZEtleUxlbmd0aH0+CiAgKiAgICB8IERPTVBvaW50
CiAgKiAgICB8IERPTVJlY3QKQEAgLTM2Nyw2ICszNzAsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RyaW5nRGF0YUlzOEJpdEZsYWcgPSAweDgwMDAwMDAwOwogICogICAgfCBSVENDZXJ0aWZp
Y2F0ZVRhZwogICogICAgfCBJbWFnZUJpdG1hcFRhZyA8b3JpZ2luQ2xlYW46dWludDhfdD4gPGxv
Z2ljYWxXaWR0aDppbnQzMl90PiA8bG9naWNhbEhlaWdodDppbnQzMl90PiA8cmVzb2x1dGlvblNj
YWxlOmRvdWJsZT4gPGJ5dGVMZW5ndGg6dWludDMyX3Q+KDxpbWFnZUJ5dGVEYXRhOnVpbnQ4X3Q+
KQogICogICAgfCBPZmZzY3JlZW5DYW52YXNUcmFuc2ZlclRhZyA8dmFsdWU6dWludDMyX3Q+Cisg
KiAgICB8IFdhc21NZW1vcnlUYWcgPHZhbHVlOnVpbnQzMl90PgogICoKICAqIEluc2lkZSBjZXJ0
aWZpY2F0ZSwgZGF0YSBpcyBzZXJpYWxpemVkIGluIHRoaXMgZm9ybWF0IGFzIHBlciBzcGVjOgog
ICoKQEAgLTQxOSw2ICs0MjMsOCBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RyaW5nRGF0YUlz
OEJpdEZsYWcgPSAweDgwMDAwMDAwOwogICoKICAqIEFycmF5QnVmZmVyIDotCiAgKiAgICBBcnJh
eUJ1ZmZlclRhZyA8bGVuZ3RoOnVpbnQzMl90PiA8Y29udGVudHM6Ynl0ZXtsZW5ndGh9PgorICog
ICAgQXJyYXlCdWZmZXJUcmFuc2ZlclRhZyA8dmFsdWU6dWludDMyX3Q+CisgKiAgICBTaGFyZWRB
cnJheUJ1ZmZlclRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKgogICogQ3J5cHRvS2V5SE1BQyA6LQog
ICogICAgPGtleVNpemU6dWludDMyX3Q+IDxrZXlEYXRhOmJ5dGV7a2V5U2l6ZX0+IENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXJUYWcgLy8gQWxnb3JpdGhtIHRhZyBpbm5lciBoYXNoIGZ1bmN0aW9u
LgpAQCAtNTc2LDYgKzU4Miw3IEBAIGNsYXNzIENsb25lU2VyaWFsaXplciA6IENsb25lQmFzZSB7
CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICBXYXNtTW9kdWxl
QXJyYXkmIHdhc21Nb2R1bGVzLAorICAgICAgICAgICAgV2FzbU1lbW9yeUhhbmRsZUFycmF5JiB3
YXNtTWVtb3J5SGFuZGxlcywKICNlbmRpZgogICAgICAgICBWZWN0b3I8U3RyaW5nPiYgYmxvYlVS
THMsIFZlY3Rvcjx1aW50OF90PiYgb3V0LCBTZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0LCBB
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkmIHNoYXJlZEJ1ZmZlcnMpCiAgICAgewpAQCAtNTg1LDYg
KzU5Miw3IEBAIGNsYXNzIENsb25lU2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICB3YXNtTW9kdWxlcywKKyAgICAgICAg
ICAgIHdhc21NZW1vcnlIYW5kbGVzLAogI2VuZGlmCiAgICAgICAgICAgICBibG9iVVJMcywgb3V0
LCBjb250ZXh0LCBzaGFyZWRCdWZmZXJzKTsKICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZXIuc2Vy
aWFsaXplKHZhbHVlKTsKQEAgLTYxNSw2ICs2MjMsNyBAQCBjbGFzcyBDbG9uZVNlcmlhbGl6ZXIg
OiBDbG9uZUJhc2UgewogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAg
ICAgV2FzbU1vZHVsZUFycmF5JiB3YXNtTW9kdWxlcywKKyAgICAgICAgICAgIFdhc21NZW1vcnlI
YW5kbGVBcnJheSYgd2FzbU1lbW9yeUhhbmRsZXMsCiAjZW5kaWYKICAgICAgICAgVmVjdG9yPFN0
cmluZz4mIGJsb2JVUkxzLCBWZWN0b3I8dWludDhfdD4mIG91dCwgU2VyaWFsaXphdGlvbkNvbnRl
eHQgY29udGV4dCwgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5JiBzaGFyZWRCdWZmZXJzKQogICAg
ICAgICA6IENsb25lQmFzZShsZXhpY2FsR2xvYmFsT2JqZWN0KQpAQCAtNjI1LDYgKzYzNCw3IEBA
IGNsYXNzIENsb25lU2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAgICAgICAgICwgbV9zaGFyZWRC
dWZmZXJzKHNoYXJlZEJ1ZmZlcnMpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAs
IG1fd2FzbU1vZHVsZXMod2FzbU1vZHVsZXMpCisgICAgICAgICwgbV93YXNtTWVtb3J5SGFuZGxl
cyh3YXNtTWVtb3J5SGFuZGxlcykKICNlbmRpZgogICAgIHsKICAgICAgICAgd3JpdGUoQ3VycmVu
dFZlcnNpb24pOwpAQCAtMTIzMCw2ICsxMjQwLDcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDog
Q2xvbmVCYXNlIHsKICAgICAgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZm
ZXI+PiBkdW1teUFycmF5QnVmZmVyczsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAg
ICAgICAgICAgV2FzbU1vZHVsZUFycmF5IGR1bW15TW9kdWxlczsKKyAgICAgICAgICAgICAgICBX
YXNtTWVtb3J5SGFuZGxlQXJyYXkgZHVtbXlNZW1vcnlIYW5kbGVzOwogI2VuZGlmCiAgICAgICAg
ICAgICAgICAgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5IGR1bW15U2hhcmVkQnVmZmVyczsKICAg
ICAgICAgICAgICAgICBDbG9uZVNlcmlhbGl6ZXIgcmF3S2V5U2VyaWFsaXplcihtX2xleGljYWxH
bG9iYWxPYmplY3QsIGR1bW15TWVzc2FnZVBvcnRzLCBkdW1teUFycmF5QnVmZmVycywgeyB9LApA
QCAtMTIzOCw2ICsxMjQ5LDcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsK
ICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgICAgICAgICAgICAgZHVt
bXlNb2R1bGVzLAorICAgICAgICAgICAgICAgICAgICBkdW1teU1lbW9yeUhhbmRsZXMsCiAjZW5k
aWYKICAgICAgICAgICAgICAgICAgICAgZHVtbXlCbG9iVVJMcywgc2VyaWFsaXplZEtleSwgU2Vy
aWFsaXphdGlvbkNvbnRleHQ6OkRlZmF1bHQsIGR1bW15U2hhcmVkQnVmZmVycyk7CiAgICAgICAg
ICAgICAgICAgcmF3S2V5U2VyaWFsaXplci53cml0ZShrZXkpOwpAQCAtMTI3NCw2ICsxMjg2LDE3
IEBAIGNsYXNzIENsb25lU2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAgICAgICAgICAgICAgICAg
d3JpdGUoaW5kZXgpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKEpTV2ViQXNzZW1ibHlNZW1vcnkqIG1lbW9yeSA9IGpzRHluYW1p
Y0Nhc3Q8SlNXZWJBc3NlbWJseU1lbW9yeSo+KHZtLCBvYmopKSB7CisgICAgICAgICAgICAgICAg
aWYgKG1lbW9yeS0+bWVtb3J5KCkuc2hhcmluZ01vZGUoKSAhPSBKU0M6Oldhc206Ok1lbW9yeVNo
YXJpbmdNb2RlOjpTaGFyZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgY29kZSA9IFNlcmlhbGl6
YXRpb25SZXR1cm5Db2RlOjpEYXRhQ2xvbmVFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHVpbnQzMl90IGlu
ZGV4ID0gbV93YXNtTWVtb3J5SGFuZGxlcy5zaXplKCk7CisgICAgICAgICAgICAgICAgbV93YXNt
TWVtb3J5SGFuZGxlcy5hcHBlbmQobWFrZVJlZihtZW1vcnktPm1lbW9yeSgpLmhhbmRsZSgpKSk7
CisgICAgICAgICAgICAgICAgd3JpdGUoV2FzbU1lbW9yeVRhZyk7CisgICAgICAgICAgICAgICAg
d3JpdGUoaW5kZXgpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQogI2VuZGlmCiAgICAgICAgICAgICBpZiAob2JqLT5pbmhlcml0czxKU0RPTVBvaW50UmVhZE9u
bHk+KHZtKSkgewogICAgICAgICAgICAgICAgIGR1bXBET01Qb2ludChvYmopOwpAQCAtMTY1OCw2
ICsxNjgxLDcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICBBcnJh
eUJ1ZmZlckNvbnRlbnRzQXJyYXkmIG1fc2hhcmVkQnVmZmVyczsKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAgICAgV2FzbU1vZHVsZUFycmF5JiBtX3dhc21Nb2R1bGVzOworICAgIFdhc21NZW1v
cnlIYW5kbGVBcnJheSYgbV93YXNtTWVtb3J5SGFuZGxlczsKICNlbmRpZgogfTsKIApAQCAtMTkz
Nyw2ICsxOTYxLDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAg
ICAgICAsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogYXJyYXlCdWZmZXJDb250ZW50c0FycmF5
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJs
b2JVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiBibG9iRmlsZVBhdGhzLCBBcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXkqIHNoYXJlZEJ1ZmZlcnMKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAg
ICAgICwgV2FzbU1vZHVsZUFycmF5KiB3YXNtTW9kdWxlcworICAgICAgICAsIFdhc21NZW1vcnlI
YW5kbGVBcnJheSogd2FzbU1lbW9yeUhhbmRsZXMKICNlbmRpZgogICAgICAgICApCiAgICAgewpA
QCAtMTk0OCw2ICsxOTczLDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2Ug
ewogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAgLCB3YXNtTW9k
dWxlcworICAgICAgICAgICAgLCB3YXNtTWVtb3J5SGFuZGxlcwogI2VuZGlmCiAgICAgICAgICAg
ICApOwogICAgICAgICBpZiAoIWRlc2VyaWFsaXplci5pc1ZhbGlkKCkpCkBAIC0yMDAxLDYgKzIw
MjcsNyBAQCBjbGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgV2FzbU1vZHVsZUFycmF5KiB3YXNtTW9k
dWxlcyA9IG51bGxwdHIKKyAgICAgICAgLCBXYXNtTWVtb3J5SGFuZGxlQXJyYXkqIHdhc21NZW1v
cnlIYW5kbGVzID0gbnVsbHB0cgogI2VuZGlmCiAgICAgICAgICkKICAgICAgICAgOiBDbG9uZUJh
c2UobGV4aWNhbEdsb2JhbE9iamVjdCkKQEAgLTIwMjEsNiArMjA0OCw3IEBAIGNsYXNzIENsb25l
RGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKICAgICAgICAgLCBtX3dhc21Nb2R1bGVzKHdhc21Nb2R1bGVzKQorICAgICAgICAsIG1fd2Fz
bU1lbW9yeUhhbmRsZXMod2FzbU1lbW9yeUhhbmRsZXMpCiAjZW5kaWYKICAgICB7CiAgICAgICAg
IGlmICghcmVhZChtX3ZlcnNpb24pKQpAQCAtMjAzMyw2ICsyMDYxLDcgQEAgY2xhc3MgQ2xvbmVE
ZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogICAgICAgICAsIFdhc21Nb2R1bGVBcnJheSogd2FzbU1vZHVsZXMKKyAgICAgICAgLCBXYXNt
TWVtb3J5SGFuZGxlQXJyYXkqIHdhc21NZW1vcnlIYW5kbGVzCiAjZW5kaWYKICAgICAgICAgKQog
ICAgICAgICA6IENsb25lQmFzZShsZXhpY2FsR2xvYmFsT2JqZWN0KQpAQCAtMjA1Niw2ICsyMDg1
LDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogI2VuZGlmCiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAsIG1fd2FzbU1vZHVsZXMod2FzbU1vZHVsZXMp
CisgICAgICAgICwgbV93YXNtTWVtb3J5SGFuZGxlcyh3YXNtTWVtb3J5SGFuZGxlcykKICNlbmRp
ZgogICAgIHsKICAgICAgICAgaWYgKCFyZWFkKG1fdmVyc2lvbikpCkBAIC0zMjk5LDYgKzMzMjks
MzMgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAgICAgICAgICAg
bV9nY0J1ZmZlci5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93KHJlc3VsdCk7CiAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CisgICAgICAgIGNhc2UgV2FzbU1lbW9yeVRhZzog
eworICAgICAgICAgICAgdWludDMyX3QgaW5kZXg7CisgICAgICAgICAgICBib29sIGluZGV4U3Vj
Y2Vzc2Z1bGx5UmVhZCA9IHJlYWQoaW5kZXgpOworICAgICAgICAgICAgaWYgKCFpbmRleFN1Y2Nl
c3NmdWxseVJlYWQgfHwgIW1fd2FzbU1lbW9yeUhhbmRsZXMgfHwgaW5kZXggPj0gbV93YXNtTWVt
b3J5SGFuZGxlcy0+c2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgZmFpbCgpOworICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBSZWZQ
dHI8V2FzbTo6TWVtb3J5SGFuZGxlPiBoYW5kbGUgPSBtX3dhc21NZW1vcnlIYW5kbGVzLT5hdChp
bmRleCk7CisgICAgICAgICAgICBpZiAoIWhhbmRsZSkgeworICAgICAgICAgICAgICAgIGZhaWwo
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYXV0byYgdm0gPSBtX2xleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CisgICAgICAg
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgICAgICBK
U1dlYkFzc2VtYmx5TWVtb3J5KiByZXN1bHQgPSBKU0M6OkpTV2ViQXNzZW1ibHlNZW1vcnk6OnRy
eUNyZWF0ZShtX2xleGljYWxHbG9iYWxPYmplY3QsIHZtLCBtX2dsb2JhbE9iamVjdC0+d2ViQXNz
ZW1ibHlNZW1vcnlTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAvLyBTaW5jZSB3ZSBhcmUgY2xv
bmluZyBhIEpTV2ViQXNzZW1ibHlNZW1vcnksIGl0J3MgaW1wb3NzaWJsZSBmb3IgdGhhdAorICAg
ICAgICAgICAgLy8gbW9kdWxlIHRvIG5vdCBoYXZlIGJlZW4gYSB2YWxpZCBtb2R1bGUuIFRoZXJl
Zm9yZSwgY3JlYXRlU3R1YiBzaG91bGQKKyAgICAgICAgICAgIC8vIG5vdCB0cm93LgorICAgICAg
ICAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBSZWY8
V2FzbTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OmNyZWF0ZShoYW5kbGUucmVsZWFz
ZU5vbk51bGwoKSwKKyAgICAgICAgICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpOb3RpZnlQ
cmVzc3VyZSkgeyB2bS5oZWFwLmNvbGxlY3RBc3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOyB9
LAorICAgICAgICAgICAgICAgIFsmdm1dIChXYXNtOjpNZW1vcnk6OlN5bmNUcnlUb1JlY2xhaW0p
IHsgdm0uaGVhcC5jb2xsZWN0U3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOyB9LAorICAgICAg
ICAgICAgICAgIFsmdm0sIHJlc3VsdF0gKFdhc206Ok1lbW9yeTo6R3Jvd1N1Y2Nlc3MsIFdhc206
OlBhZ2VDb3VudCBvbGRQYWdlQ291bnQsIFdhc206OlBhZ2VDb3VudCBuZXdQYWdlQ291bnQpIHsg
cmVzdWx0LT5ncm93U3VjY2Vzc0NhbGxiYWNrKHZtLCBvbGRQYWdlQ291bnQsIG5ld1BhZ2VDb3Vu
dCk7IH0pOworICAgICAgICAgICAgcmVzdWx0LT5hZG9wdChXVEZNb3ZlKG1lbW9yeSkpOworICAg
ICAgICAgICAgbV9nY0J1ZmZlci5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93KHJlc3VsdCk7Cisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgY2Fz
ZSBBcnJheUJ1ZmZlclRhZzogewogICAgICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJh
eUJ1ZmZlcjsKQEAgLTM0MzksNiArMzQ5Niw3IEBAIGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDog
Q2xvbmVCYXNlIHsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBXYXNtTW9k
dWxlQXJyYXkqIG1fd2FzbU1vZHVsZXM7CisgICAgV2FzbU1lbW9yeUhhbmRsZUFycmF5KiBtX3dh
c21NZW1vcnlIYW5kbGVzOwogI2VuZGlmCiAKICAgICBTdHJpbmcgYmxvYkZpbGVQYXRoRm9yQmxv
YlVSTChjb25zdCBTdHJpbmcmIGJsb2JVUkwpCkBAIC0zNjYxLDYgKzM3MTksNyBAQCBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBi
dWZmZXIsIGNvbnN0IFZlYwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAg
ICAsIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTW9kdWxlQXJyYXk+IHdhc21Nb2R1bGVzQXJyYXkKKyAg
ICAgICAgLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1lbW9yeUhhbmRsZUFycmF5PiB3YXNtTWVtb3J5
SGFuZGxlc0FycmF5CiAjZW5kaWYKICAgICAgICAgKQogICAgIDogbV9kYXRhKFdURk1vdmUoYnVm
ZmVyKSkKQEAgLTM2NzIsNiArMzczMSw3IEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgY29uc3QgVmVjCiAjZW5k
aWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgLCBtX3dhc21Nb2R1bGVzQXJyYXkoV1RG
TW92ZSh3YXNtTW9kdWxlc0FycmF5KSkKKyAgICAsIG1fd2FzbU1lbW9yeUhhbmRsZXNBcnJheShX
VEZNb3ZlKHdhc21NZW1vcnlIYW5kbGVzQXJyYXkpKQogI2VuZGlmCiB7CiAgICAgLy8gU2luY2Ug
dGhpcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgaXMgbWVhbnQgdG8gYmUgcGFzc2VkIGJldHdlZW4g
dGhyZWFkcywgaXRzIFN0cmluZyBkYXRhIG1lbWJlcnMKQEAgLTM3MTAsNiArMzc3MCwxMCBAQCBz
aXplX3QgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjb21wdXRlTWVtb3J5Q29zdCgpIGNvbnN0CiAK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgLy8gV2UgYXJlIG5vdCBzdXBwb3J0aW5nIFdl
YkFzc2VtYmx5IE1vZHVsZSBtZW1vcnkgZXN0aW1hdGlvbiB5ZXQuCisgICAgaWYgKG1fd2FzbU1l
bW9yeUhhbmRsZXNBcnJheSkgeworICAgICAgICBmb3IgKGF1dG8mIGNvbnRlbnQgOiAqbV93YXNt
TWVtb3J5SGFuZGxlc0FycmF5KQorICAgICAgICAgICAgY29zdCArPSBjb250ZW50LT5zaXplKCk7
CisgICAgfQogI2VuZGlmCiAKICAgICBmb3IgKGF1dG8mIHVybHMgOiBtX2Jsb2JVUkxzKQpAQCAt
MzgwMCw2ICszODY0LDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QmIGxleGkKICAgICBWZWN0b3I8UmVm
UHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBkdW1teUFycmF5QnVmZmVyczsKICNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCiAgICAgV2FzbU1vZHVsZUFycmF5IGR1bW15TW9kdWxlczsKKyAgICBXYXNtTWVt
b3J5SGFuZGxlQXJyYXkgZHVtbXlNZW1vcnlIYW5kbGVzOwogI2VuZGlmCiAgICAgQXJyYXlCdWZm
ZXJDb250ZW50c0FycmF5IGR1bW15U2hhcmVkQnVmZmVyczsKICAgICBhdXRvIGNvZGUgPSBDbG9u
ZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIGR1bW15
TWVzc2FnZVBvcnRzLCBkdW1teUFycmF5QnVmZmVycywgZHVtbXlJbWFnZUJpdG1hcHMsCkBAIC0z
ODA4LDExICszODczLDEzIEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0JiBsZXhpCiAjZW5kaWYKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIGR1bW15TW9kdWxlcywKKyAgICAgICAgZHVtbXlN
ZW1vcnlIYW5kbGVzLAogI2VuZGlmCiAgICAgICAgIGJsb2JVUkxzLCBidWZmZXIsIFNlcmlhbGl6
YXRpb25Db250ZXh0OjpEZWZhdWx0LCBkdW1teVNoYXJlZEJ1ZmZlcnMpOwogCiAjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZHVtbXlNb2R1bGVzLmlzRW1w
dHkoKSwgIldhc206Ok1vZHVsZSBzZXJpYWxpemF0aW9uIGlzIG9ubHkgYWxsb3dlZCBpbiB0aGUg
cG9zdE1lc3NhZ2UgY29udGV4dCIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZHVtbXlNZW1v
cnlIYW5kbGVzLmlzRW1wdHkoKSwgIldhc206Ok1lbW9yeSBzZXJpYWxpemF0aW9uIGlzIG9ubHkg
YWxsb3dlZCBpbiB0aGUgcG9zdE1lc3NhZ2UgY29udGV4dCIpOwogI2VuZGlmCiAKICAgICBpZiAo
dGhyb3dFeGNlcHRpb25zID09IFNlcmlhbGl6YXRpb25FcnJvck1vZGU6OlRocm93aW5nKQpAQCAt
Mzg1OSw3ICszOTI2LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICNlbmRpZgogICAgIGZv
ciAoYXV0byYgdHJhbnNmZXJhYmxlIDogdHJhbnNmZXJMaXN0KSB7CiAgICAgICAgIGlmIChhdXRv
IGFycmF5QnVmZmVyID0gdG9Qb3NzaWJseVNoYXJlZEFycmF5QnVmZmVyKHZtLCB0cmFuc2ZlcmFi
bGUuZ2V0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXJyYXlCdWZmZXItPmlzRGV0YWNoZWQoKSkK
KyAgICAgICAgICAgIGlmIChhcnJheUJ1ZmZlci0+aXNEZXRhY2hlZCgpIHx8IGFycmF5QnVmZmVy
LT5pc1NoYXJlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBEYXRhQ2xv
bmVFcnJvciB9OwogICAgICAgICAgICAgaWYgKGFycmF5QnVmZmVyLT5pc0xvY2tlZCgpKSB7CiAg
ICAgICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAt
MzkwNCw2ICszOTcxLDcgQEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICAgICBWZWN0b3I8U3Ry
aW5nPiBibG9iVVJMczsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV2FzbU1vZHVsZUFy
cmF5IHdhc21Nb2R1bGVzOworICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSB3YXNtTWVtb3J5SGFu
ZGxlczsKICNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXk+IHNoYXJlZEJ1ZmZlcnMgPSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4o
KTsKICAgICBhdXRvIGNvZGUgPSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSgmbGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzLCBpbWFnZUJpdG1h
cHMsCkBAIC0zOTExLDcgKzM5NzksOCBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYgogICAgICAg
ICBvZmZzY3JlZW5DYW52YXNlcywKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAg
ICAgICAgd2FzbU1vZHVsZXMsIAorICAgICAgICB3YXNtTW9kdWxlcywKKyAgICAgICAgd2FzbU1l
bW9yeUhhbmRsZXMsCiAjZW5kaWYKICAgICAgICAgYmxvYlVSTHMsIGJ1ZmZlciwgY29udGV4dCwg
KnNoYXJlZEJ1ZmZlcnMpOwogCkBAIC0zOTM2LDYgKzQwMDUsNyBAQCBFeGNlcHRpb25PcjxSZWY8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNH
bG9iYWxPYgogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAgICAg
ICwgbWFrZVVuaXF1ZTxXYXNtTW9kdWxlQXJyYXk+KHdhc21Nb2R1bGVzKQorICAgICAgICAgICAg
ICAgICwgbWFrZVVuaXF1ZTxXYXNtTWVtb3J5SGFuZGxlQXJyYXk+KHdhc21NZW1vcnlIYW5kbGVz
KQogI2VuZGlmCiAgICAgICAgICAgICAgICAgKSk7CiB9CkBAIC0zOTkzLDYgKzQwNjMsNyBAQCBK
U1ZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsCiAgICAgICAgICwgbV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXkuZ2V0KCksIG1fZGF0YSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMsIG1fc2hhcmVkQnVmZmVy
Q29udGVudHNBcnJheS5nZXQoKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBt
X3dhc21Nb2R1bGVzQXJyYXkuZ2V0KCkKKyAgICAgICAgLCBtX3dhc21NZW1vcnlIYW5kbGVzQXJy
YXkuZ2V0KCkKICNlbmRpZgogICAgICAgICApOwogICAgIGlmICh0aHJvd0V4Y2VwdGlvbnMgPT0g
U2VyaWFsaXphdGlvbkVycm9yTW9kZTo6VGhyb3dpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGQyYTBjNGEwYjgzZGFl
ODkyZGI3OTUwNmVkMzE2ZGViMzhhMTY1MGQuLjBjZGI0MDE4Yzg0N2ZhMDBmZWQ3ZjVmYjBmY2Jj
YTM1Mzk4MzUyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC00MSw2ICs0MSw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZUpTVmFsdWUqIEpTVmFsdWVSZWY7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIGNsYXNzIE1vZHVsZTsKK2NsYXNzIE1lbW9y
eUhhbmRsZTsKIH0gfQogI2VuZGlmCiAKQEAgLTYxLDYgKzYyLDcgQEAgZW51bSBjbGFzcyBTZXJp
YWxpemF0aW9uQ29udGV4dCB7IERlZmF1bHQsIFdvcmtlclBvc3RNZXNzYWdlLCBXaW5kb3dQb3N0
TWVzc2FnZQogdXNpbmcgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5ID0gVmVjdG9yPEpTQzo6QXJy
YXlCdWZmZXJDb250ZW50cz47CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogdXNpbmcgV2FzbU1v
ZHVsZUFycmF5ID0gVmVjdG9yPFJlZlB0cjxKU0M6Oldhc206Ok1vZHVsZT4+OwordXNpbmcgV2Fz
bU1lbW9yeUhhbmRsZUFycmF5ID0gVmVjdG9yPFJlZlB0cjxKU0M6Oldhc206Ok1lbW9yeUhhbmRs
ZT4+OwogI2VuZGlmCiAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CkBAIC0xMjIsNiArMTI0LDcgQEAgY2xhc3MgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4KICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBzdGQ6
OnVuaXF1ZV9wdHI8V2FzbU1vZHVsZUFycmF5PiA9IG51bGxwdHIKKyAgICAgICAgLCBzdGQ6OnVu
aXF1ZV9wdHI8V2FzbU1lbW9yeUhhbmRsZUFycmF5PiA9IG51bGxwdHIKICNlbmRpZgogICAgICAg
ICApOwogCkBAIC0xMzYsNiArMTM5LDcgQEAgY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4KICNlbmRp
ZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1vZHVs
ZUFycmF5PiBtX3dhc21Nb2R1bGVzQXJyYXk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdhc21NZW1v
cnlIYW5kbGVBcnJheT4gbV93YXNtTWVtb3J5SGFuZGxlc0FycmF5OwogI2VuZGlmCiAgICAgVmVj
dG9yPFN0cmluZz4gbV9ibG9iVVJMczsKICAgICBzaXplX3QgbV9tZW1vcnlDb3N0IHsgMCB9Owpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBh
ODY0NmI3MzQ2NjZhODZlMjgyODE3NGIyODczZTliYzdhNjE4OTFhLi4yYmM4Y2Y4ODk5YmVlYjdh
Nzk0YjQ0ZmU3MWI5YTJkZmY4MTQ2MzFjIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTExLTEzICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50
IFdlYkFzc2VtYmx5Lk1lbW9yeSB3aXRoIHNoYXJlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtbG9hZC1z
aGFyZWQuanM6IEFkZGVkLgorICAgICAgICAod2FzbUZyYW1lQ291bnRGcm9tRXJyb3IpOgorICAg
ICAgICAqIHdhc20vc3RyZXNzL3NoYXJlZC13YXNtLW1lbW9yeS1idWZmZXIuanM6IEFkZGVkLgor
CiAyMDIwLTExLTEyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0pTQ10gVXBncmFkZSB0ZXN0MjYyCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vZnVuY3Rp
b24tdGVzdHMvdHJhcC1sb2FkLXNoYXJlZC5qcyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0
cy90cmFwLWxvYWQtc2hhcmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5ODkwYTdhYWQ1N2U2NDgyNGQxMTRi
YjJhMzExODA2MzI0NDAxNmIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rp
b24tdGVzdHMvdHJhcC1sb2FkLXNoYXJlZC5qcwpAQCAtMCwwICsxLDM0IEBACitpbXBvcnQgQnVp
bGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJworaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fz
c2VydC5qcycKKworY29uc3QgcGFnZVNpemUgPSA2NCAqIDEwMjQ7Citjb25zdCBudW1QYWdlcyA9
IDEwOworCitjb25zdCBidWlsZGVyID0gKG5ldyBCdWlsZGVyKCkpCisgICAgLlR5cGUoKS5FbmQo
KQorICAgIC5JbXBvcnQoKQorICAgICAgICAuTWVtb3J5KCJhIiwgImIiLCB7aW5pdGlhbDogbnVt
UGFnZXN9KQorICAgIC5FbmQoKQorICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgLkV4cG9ydCgp
LkZ1bmN0aW9uKCJmb28iKS5FbmQoKQorICAgIC5Db2RlKCkKKyAgICAgICAgLkZ1bmN0aW9uKCJm
b28iLCB7cGFyYW1zOiBbImkzMiJdLCByZXQ6ICJpMzIifSkKKyAgICAgICAgICAgIC5HZXRMb2Nh
bCgwKQorICAgICAgICAgICAgLkkzMkxvYWQoMiwgMCkKKyAgICAgICAgICAgIC5SZXR1cm4oKQor
ICAgICAgICAuRW5kKCkKKyAgICAuRW5kKCk7CisKK2NvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNz
ZW1ibHkoKS5nZXQoKTsKK2NvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmlu
KTsKK2NvbnN0IGZvbyA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHthOiB7Yjog
bmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDogbnVtUGFnZXMsIG1heGltdW06IG51bVBh
Z2VzICogMiwgc2hhcmVkOiB0cnVlfSl9fSkuZXhwb3J0cy5mb287CisKK2Z1bmN0aW9uIHdhc21G
cmFtZUNvdW50RnJvbUVycm9yKGUpIHsKKyAgICBsZXQgc3RhY2tGcmFtZXMgPSBlLnN0YWNrLnNw
bGl0KCJcbiIpLmZpbHRlcigocykgPT4gcy5pbmRleE9mKCJ3YXNtLSIpICE9PSAtMSk7CisgICAg
cmV0dXJuIHN0YWNrRnJhbWVzLmxlbmd0aDsKK30KKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
OyBpKyspIHsKKyAgICBjb25zdCBlID0gYXNzZXJ0LnRocm93cygoKSA9PiBmb28obnVtUGFnZXMg
KiBwYWdlU2l6ZSArIDEpLCBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IsICJPdXQgb2YgYm91bmRz
IG1lbW9yeSBhY2Nlc3MiKTsKKyAgICBhc3NlcnQuZXEod2FzbUZyYW1lQ291bnRGcm9tRXJyb3Io
ZSksIDIpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3N0cmVzcy9zaGFyZWQtd2FzbS1t
ZW1vcnktYnVmZmVyLmpzIGIvSlNUZXN0cy93YXNtL3N0cmVzcy9zaGFyZWQtd2FzbS1tZW1vcnkt
YnVmZmVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4OTYxM2M5MDkyNTU3MDQ1NmU5NTA4NDUxZTVlMWMwM2Rl
MTZlYzIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vc3RyZXNzL3NoYXJlZC13YXNt
LW1lbW9yeS1idWZmZXIuanMKQEAgLTAsMCArMSwyNCBAQAoraW1wb3J0ICogYXMgYXNzZXJ0IGZy
b20gJy4uL2Fzc2VydC5qcycKKworbGV0IHBhZ2VTaXplID0gNjQgPDwgMTA7CitsZXQgbWVtb3J5
ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7CisgICAgaW5pdGlhbDogMSwKKyAgICBtYXhpbXVt
OiA1LAorICAgIHNoYXJlZDogdHJ1ZSwKK30pOworbGV0IGJ1ZmZlcjEgPSBtZW1vcnkuYnVmZmVy
OworYXNzZXJ0LmVxKGJ1ZmZlcjEuYnl0ZUxlbmd0aCwgcGFnZVNpemUgKiAxKTsKK2Fzc2VydC5l
cShidWZmZXIxLCBtZW1vcnkuYnVmZmVyKTsKKworbWVtb3J5Lmdyb3coMSk7CitsZXQgYnVmZmVy
MiA9IG1lbW9yeS5idWZmZXI7Cithc3NlcnQuZXEoYnVmZmVyMS5ieXRlTGVuZ3RoLCBwYWdlU2l6
ZSAqIDEpOworYXNzZXJ0LmVxKGJ1ZmZlcjIuYnl0ZUxlbmd0aCwgcGFnZVNpemUgKiAyKTsKK2Fz
c2VydC5mYWxzeShidWZmZXIxID09PSBidWZmZXIyKTsKKworbGV0IGJ5dGVzMSA9IG5ldyBVaW50
OEFycmF5KGJ1ZmZlcjEpOworbGV0IGJ5dGVzMiA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcjIpOwor
Ynl0ZXMxWzBdID0gNDI7Cithc3NlcnQuZXEoYnl0ZXMyWzBdLCA0Mik7CitieXRlczJbMF0gPSA0
MzsKK2Fzc2VydC5lcShieXRlczFbMF0sIDQzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414012</attachid>
            <date>2020-11-13 01:26:26 -0800</date>
            <delta_ts>2020-11-13 01:29:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218693-20201113012625.patch</filename>
            <type>text/plain</type>
            <size>115069</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YTc3YjFmMDc5MTM3MGUzZTU4YjZmNmM3ODE2ZGFmMzUwOTA2OGU4Li5jNmViOGI1MGViYTMwYjc3
MjVkYzE5NWJiM2IzYzEwN2Q1MmQ2OWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NiBAQAorMjAyMC0xMS0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBXZWJBc3NlbWJseS5NZW1vcnkgd2l0aCBzaGFy
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODY5
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBsbGludC9MTEludFBDUmFuZ2VzLmg6CisgICAgICAgIChKU0M6
OkxMSW50Ojppc1dhc21MTEludFBDKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAgICAgICogcnVu
dGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6b3ZlcnJpZGVEZWZhdWx0cyk6CisgICAg
ICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemUpOgorICAgICAgICAqIHdhc20vV2FzbUFpcklS
R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OkFpcklS
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OnJlc3RvcmVX
ZWJBc3NlbWJseUdsb2JhbFN0YXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0
b3I6OmFkZEN1cnJlbnRNZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRv
cjo6ZW1pdENoZWNrQW5kUHJlcGFyZVBvaW50ZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJ
UkdlbmVyYXRvcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9y
OjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFs
U3RhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVt
b3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6ZW1pdENoZWNrQW5kUHJl
cGFyZVBvaW50ZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRDYWxs
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KToK
KyAgICAgICAgKiB3YXNtL1dhc21CaW5kaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6d2Fz
bVRvV2FzbSk6CisgICAgICAgICogd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6dHJhcEhhbmRsZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjplbmFi
bGVGYXN0TWVtb3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6cHJlcGFyZUZhc3RNZW1vcnkpOgor
ICAgICAgICAqIHdhc20vV2FzbUluc3RhbmNlLmg6CisgICAgICAgIChKU0M6Oldhc206Okluc3Rh
bmNlOjpjYWNoZWRNZW1vcnkgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6
Y2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5z
dGFuY2U6OnVwZGF0ZUNhY2hlZE1lbW9yeSk6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNl
OjpvZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSk6CisgICAgICAgIChKU0M6Oldhc206
Okluc3RhbmNlOjpjYWNoZWRNZW1vcnlTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6V2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogd2FzbS9XYXNtTWVtb3J5LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5
SGFuZGxlOjpNZW1vcnlIYW5kbGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnlIYW5kbGU6
On5NZW1vcnlIYW5kbGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Ok1lbW9yeSk6Cisg
ICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
TWVtb3J5Ojp0cnlDcmVhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmFkZHJlc3NJ
c0luQWN0aXZlR3Jvd2FibGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Omdy
b3dTaGFyZWQpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Omdyb3cpOgorICAgICAgICAo
SlNDOjpXYXNtOjpNZW1vcnk6OmR1bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1v
cnk6On5NZW1vcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmFkZHJl
c3NJc0luQWN0aXZlRmFzdE1lbW9yeSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNtTWVt
b3J5Lmg6CisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6YWRkcmVzc0lzSW5BY3RpdmVHcm93
YWJsZU1lbW9yeSk6CisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6b3BlcmF0b3IgYm9vbCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6bWVtb3J5IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5OjpzaXplIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5OjpzaXplSW5QYWdlcyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6aW5pdGlhbCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6bWF4aW11bSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6bW9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6Oldhc206Ok1lbW9yeTo6Y2hlY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpX
YXNtOjpNZW1vcnk6Om9mZnNldE9mTWVtb3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2Fz
bTo6TWVtb3J5OjpvZmZzZXRPZlNpemUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpN
ZW1vcnk6OmFkZHJlc3NJc0luQWN0aXZlRmFzdE1lbW9yeSk6IERlbGV0ZWQuCisgICAgICAgICog
d2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5u
ZWRSZWdpc3RlckluZm86OmdldCk6CisgICAgICAgIChKU0M6Oldhc206OlBpbm5lZFJlZ2lzdGVy
SW5mbzo6UGlubmVkUmVnaXN0ZXJJbmZvKToKKyAgICAgICAgKiB3YXNtL1dhc21NZW1vcnlJbmZv
cm1hdGlvbi5oOgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OnRvU2F2
ZSBjb25zdCk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5TW9kZS5jcHA6CisgICAgICAgIChK
U0M6Oldhc206Om1ha2VTdHJpbmcpOgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeU1vZGUuaDoK
KyAgICAgICAgKiB3YXNtL2pzL0pTVG9XYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6Y3Jl
YXRlSlNUb1dhc21XcmFwcGVyKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0
YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dHJ5Q3JlYXRl
KToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwOgorICAgICAgICAo
SlNDOjpKU1dlYkFzc2VtYmx5TWVtb3J5OjpidWZmZXIpOgorICAgICAgICAoSlNDOjpKU1dlYkFz
c2VtYmx5TWVtb3J5Ojpncm93U3VjY2Vzc0NhbGxiYWNrKToKKyAgICAgICAgKiB3YXNtL2pzL0pT
V2ViQXNzZW1ibHlNZW1vcnkuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rp
b24uY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUZ1bmN0aW9uOjpqc0NhbGxFbnRyeXBv
aW50U2xvdyk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAg
KiB3YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6
OmV2YWx1YXRlKToKKwogMjAyMC0xMS0xMiAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tv
dkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIFN1cHBvcnQgaW1tIGZv
ciByZWYubnVsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU5NDc1NzFhNTgwMTU5YzFjZmRiN2RiNjc1MGMzNDMy
N2Y5M2Q5YjguLjg2YWM0MGJkYjVjMzBlZTRiNmEyOWM4MWM1NjQxYzllNWJiNWI4NTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMC0xMS0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBXZWJBc3NlbWJseS5NZW1v
cnkgd2l0aCBzaGFyZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxODY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkNsb25lU2VyaWFsaXplcjo6Q2xvbmVTZXJpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
b25lU2VyaWFsaXplcjo6ZHVtcElmVGVybWluYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVE
ZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJp
YWxpemVyOjpDbG9uZURlc2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2Vy
aWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y29tcHV0ZU1lbW9yeUNvc3QgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisKIDIwMjAtMTEtMTIgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gRW5hYmxlIGlu
bGluZSByZXBsYWNlZCBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggMzhhZTZjZTExYTg5YmIyY2E2NTdjNThjZjgyZDdlNDc1MThhOTk1MS4uMDUzM2E4MWZkOTYx
MzdiZTk2MDdjNjdmMjNlMjAzMTljZjQwMTYwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMTA4OCw2ICsxMDg4LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICB3YXNtL1dhc21UaWVyVXBDb3VudC5oCiAKICAgICB3YXNt
L2pzL0pTV2ViQXNzZW1ibHkuaAorICAgIHdhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5oCiAg
ICAgd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGMwZWVmMGJjMzBlMDJjZDg3NmM5MzEyZDcxZWQ2ZTAxMjdkM2U0NTguLmJj
MDNjNzhjYjExODFmZjIyMzlhZTFiMTFkM2Y0NGM4ZWE0ZmQ4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNTc0LDcgKzE1NzQsNyBAQAogCQlBRDAwNjU5RTFFQ0FDODEyMDAw
Q0E5MjYgLyogV2FzbUxpbWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUQwMDY1OUQxRUNBQzdGRTAwMENBOTI2IC8qIFdhc21MaW1pdHMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBRDJGQ0JFMzFE
QjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQTcxREI1OERBNDAwQjNF
NzM2IC8qIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaCAqLzsgfTsKIAkJQUQyRkNCRTUxREI1
OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQTkxREI1OERBNDAwQjNFNzM2IC8q
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oICovOyB9OwotCQlBRDJGQ0JFNzFEQjU4REFEMDBCM0U3
MzYgLyogSlNXZWJBc3NlbWJseU1lbW9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQUIxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1i
bHlNZW1vcnkuaCAqLzsgfTsKKwkJQUQyRkNCRTcxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNz
ZW1ibHlNZW1vcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEFEMkZDQkFCMURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5TWVtb3J5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQUQyRkNCRTkx
REI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkFEMURCNThEQTQwMEIz
RTczNiAvKiBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmggKi87IH07CiAJCUFEMkZDQkVCMURC
NThEQUQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5VGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkFGMURCNThEQTQwMEIzRTczNiAvKiBK
U1dlYkFzc2VtYmx5VGFibGUuaCAqLzsgfTsKIAkJQUQyRkNCRUQxREI1OERBRDAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkIxMURCNThEQTQwMEIzRTczNiAvKiBX
ZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmggKi87IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRQQ1Jhbmdlcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50UENSYW5nZXMuaAppbmRleCA0NGY0ZWY5MTAzZDdlMjE2Mjk1
OWRmYTU2ODJlYTZjYjFiNTI4NzEzLi42NGIyZGU4OTI0ZTg3MWQ5NGZiYWNkYTJmZDEwZDg4Mjdh
YjIwYzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRQQ1Jh
bmdlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFBDUmFuZ2VzLmgK
QEAgLTM1LDYgKzM1LDEwIEBAIG5hbWVzcGFjZSBMTEludCB7CiBleHRlcm4gIkMiIHsKICAgICB2
b2lkIGxsaW50UENSYW5nZVN0YXJ0KCk7CiAgICAgdm9pZCBsbGludFBDUmFuZ2VFbmQoKTsKKyNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgdm9pZCB3YXNtTExJbnRQQ1JhbmdlU3RhcnQoKTsK
KyAgICB2b2lkIHdhc21MTEludFBDUmFuZ2VFbmQoKTsKKyNlbmRpZgogfQogCiBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNMTEludFBDKHZvaWQqIHBjKQpAQCAtNDYsNiArNTAsMTcgQEAgQUxXQVlTX0lO
TElORSBib29sIGlzTExJbnRQQyh2b2lkKiBwYykKICAgICByZXR1cm4gbGxpbnRTdGFydCA8PSBw
Y0FzSW50ICYmIHBjQXNJbnQgPD0gbGxpbnRFbmQ7CiB9CiAKKyNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCitBTFdBWVNfSU5MSU5FIGJvb2wgaXNXYXNtTExJbnRQQyh2b2lkKiBwYykKK3sKKyAgICB1
aW50cHRyX3QgcGNBc0ludCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHBjKTsKKyAgICB1aW50
cHRyX3Qgc3RhcnQgPSB1bnRhZ0NvZGVQdHI8dWludHB0cl90LCBDRnVuY3Rpb25QdHJUYWc+KHdh
c21MTEludFBDUmFuZ2VTdGFydCk7CisgICAgdWludHB0cl90IGVuZCA9IHVudGFnQ29kZVB0cjx1
aW50cHRyX3QsIENGdW5jdGlvblB0clRhZz4od2FzbUxMSW50UENSYW5nZUVuZCk7CisgICAgUkVM
RUFTRV9BU1NFUlQoc3RhcnQgPCBlbmQpOworICAgIHJldHVybiBzdGFydCA8PSBwY0FzSW50ICYm
IHBjQXNJbnQgPD0gZW5kOworfQorI2VuZGlmCisKICNpZiAhRU5BQkxFKENfTE9PUCkKIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIExMSW50UEMgPSBHUFJJbmZvOjpyZWdUNDsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CmluZGV4IDgzZTI0YTA4MjEwYjk1ZWI4NzAwM2JjZWUxNjgzYTA5OGE4ZjQ4NjcuLmJlZDVjZGY1
ZTJhOTM0MjI3NDIxODdkMDMzYmFkZjBmMzVhZTA0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTI0NjcsNyArMjQ2
NywxMiBAQCBtYWNybyB3YXNtU2NvcGUoKQogICAgICMgYnV0IHdlIGRvbid0IHdhbnQgdG8gaW50
ZXJmZXJlIHdpdGggdGhlIExMSW50IG9wY29kZXMKICAgICBpbmNsdWRlIFdlYkFzc2VtYmx5CiBl
bmQKKworZ2xvYmFsIF93YXNtTExJbnRQQ1JhbmdlU3RhcnQKK193YXNtTExJbnRQQ1JhbmdlU3Rh
cnQ6CiB3YXNtU2NvcGUoKQorZ2xvYmFsIF93YXNtTExJbnRQQ1JhbmdlRW5kCitfd2FzbUxMSW50
UENSYW5nZUVuZDoKIAogZWxzZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvV2ViQXNzZW1ibHkuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFz
c2VtYmx5LmFzbQppbmRleCA4YmZmYzhhNjk3ZDJlNmU0ZjIwZGU5NjQwNWE1ZjNkMjRmOGExZWJj
Li5kZjhiYmZhMWQ0NzQwNGI3MDdiN2RjZGZjOWJkM2ZmNmZlMzI5MWFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KQEAgLTQ1LDcgKzQ1LDcgQEAgY29u
c3QgTnVtYmVyT2ZXYXNtQXJndW1lbnRzID0gTnVtYmVyT2ZXYXNtQXJndW1lbnRHUFJzICsgTnVt
YmVyT2ZXYXNtQXJndW1lbnRGUFIKICMgVGhlc2UgbXVzdCBtYXRjaCB0aGUgZGVmaW5pdGlvbiBp
biBXYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCiBjb25zdCB3YXNtSW5zdGFuY2UgPSBjc3IwCiBj
b25zdCBtZW1vcnlCYXNlID0gY3NyMwotY29uc3QgbWVtb3J5U2l6ZSA9IGNzcjQKK2NvbnN0IGJv
dW5kc0NoZWNraW5nU2l6ZSA9IGNzcjQKIAogIyBUaGlzIG11c3QgbWF0Y2ggdGhlIGRlZmluaXRp
b24gaW4gTG93TGV2ZWxJbnRlcnByZXRlci5hc20KIGlmIFg4Nl82NApAQCAtMTg3LDcgKzE4Nyw3
IEBAIGVuZAogIyBXYXNtIHNwZWNpZmljIGhlbHBlcnMKIAogbWFjcm8gcHJlc2VydmVDYWxsZWVT
YXZlc1VzZWRCeVdhc20oKQotICAgICMgTk9URTogV2UgaW50ZW50aW9uYWxseSBkb24ndCBzYXZl
IG1lbW9yeUJhc2UgYW5kIG1lbW9yeVNpemUgaGVyZS4gU2VlIHRoZSBjb21tZW50CisgICAgIyBO
T1RFOiBXZSBpbnRlbnRpb25hbGx5IGRvbid0IHNhdmUgbWVtb3J5QmFzZSBhbmQgYm91bmRzQ2hl
Y2tpbmdTaXplIGhlcmUuIFNlZSB0aGUgY29tbWVudAogICAgICMgaW4gcmVzdG9yZUNhbGxlZVNh
dmVzVXNlZEJ5V2FzbSgpIGJlbG93IGZvciB3aHkuCiAgICAgc3VicCBDYWxsZWVTYXZlU3BhY2VT
dGFja0FsaWduZWQsIHNwCiAgICAgaWYgQVJNNjQgb3IgQVJNNjRFCkBAIC0yMDEsNyArMjAxLDcg
QEAgbWFjcm8gcHJlc2VydmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQogZW5kCiAKIG1hY3JvIHJl
c3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQotICAgICMgTk9URTogV2UgaW50ZW50aW9uYWxs
eSBkb24ndCByZXN0b3JlIG1lbW9yeUJhc2UgYW5kIG1lbW9yeVNpemUgaGVyZS4gVGhlc2UgYXJl
IHNhdmVkCisgICAgIyBOT1RFOiBXZSBpbnRlbnRpb25hbGx5IGRvbid0IHJlc3RvcmUgbWVtb3J5
QmFzZSBhbmQgYm91bmRzQ2hlY2tpbmdTaXplIGhlcmUuIFRoZXNlIGFyZSBzYXZlZAogICAgICMg
YW5kIHJlc3RvcmVkIHdoZW4gZW50ZXJpbmcgV2FzbSBieSB0aGUgSlNUb1dhc20gd3JhcHBlciBh
bmQgY2hhbmdlcyB0byB0aGVtIGFyZSBtZWFudAogICAgICMgdG8gYmUgb2JzZXJ2YWJsZSB3aXRo
aW4gdGhlIHNhbWUgV2FzbSBtb2R1bGUuCiAgICAgaWYgQVJNNjQgb3IgQVJNNjRFCkBAIC0yNDAs
OCArMjQwLDggQEAgZW5kCiAKIG1hY3JvIHJlbG9hZE1lbW9yeVJlZ2lzdGVyc0Zyb21JbnN0YW5j
ZShpbnN0YW5jZSwgc2NyYXRjaDEsIHNjcmF0Y2gyKQogICAgIGxvYWRwIFdhc206Okluc3RhbmNl
OjptX2NhY2hlZE1lbW9yeVtpbnN0YW5jZV0sIG1lbW9yeUJhc2UKLSAgICBsb2FkaSBXYXNtOjpJ
bnN0YW5jZTo6bV9jYWNoZWRNZW1vcnlTaXplW2luc3RhbmNlXSwgbWVtb3J5U2l6ZQotICAgIGNh
Z2VkUHJpbWl0aXZlKG1lbW9yeUJhc2UsIG1lbW9yeVNpemUsIHNjcmF0Y2gxLCBzY3JhdGNoMikK
KyAgICBsb2FkaSBXYXNtOjpJbnN0YW5jZTo6bV9jYWNoZWRCb3VuZHNDaGVja2luZ1NpemVbaW5z
dGFuY2VdLCBib3VuZHNDaGVja2luZ1NpemUKKyAgICBjYWdlZFByaW1pdGl2ZShtZW1vcnlCYXNl
LCBib3VuZHNDaGVja2luZ1NpemUsIHNjcmF0Y2gxLCBzY3JhdGNoMikKIGVuZAogCiBtYWNybyB0
aHJvd0V4Y2VwdGlvbihleGNlcHRpb24pCkBAIC04NTYsNyArODU2LDkgQEAgd2FzbU9wKGNhbGxf
aW5kaXJlY3Rfbm9fdGxzLCBXYXNtQ2FsbEluZGlyZWN0Tm9UbHMsIG1hY3JvKGN0eCkKIGVuZCkK
IAogd2FzbU9wKGN1cnJlbnRfbWVtb3J5LCBXYXNtQ3VycmVudE1lbW9yeSwgbWFjcm8oY3R4KQot
ICAgIGxvYWRwIFdhc206Okluc3RhbmNlOjptX2NhY2hlZE1lbW9yeVNpemVbd2FzbUluc3RhbmNl
XSwgdDAKKyAgICBsb2FkcCBXYXNtOjpJbnN0YW5jZTo6bV9tZW1vcnlbd2FzbUluc3RhbmNlXSwg
dDAKKyAgICBsb2FkcCBXYXNtOjpNZW1vcnk6Om1faGFuZGxlW3QwXSwgdDAKKyAgICBsb2FkcCBX
YXNtOjpNZW1vcnlIYW5kbGU6Om1fc2l6ZVt0MF0sIHQwCiAgICAgdXJzaGlmdHEgMTYsIHQwCiAg
ICAgcmV0dXJucShjdHgsIHQwKQogZW5kKQpAQCAtODc0LDcgKzg3Niw3IEBAIGVuZCkKICMgdXNl
cyBvZmZzZXQgYXMgc2NyYXRjaCBhbmQgcmV0dXJucyByZXN1bHQgb24gcG9pbnRlcgogbWFjcm8g
ZW1pdENoZWNrQW5kUHJlcGFyZVBvaW50ZXIoY3R4LCBwb2ludGVyLCBvZmZzZXQsIHNpemUpCiAg
ICAgbGVhcCBzaXplIC0gMVtwb2ludGVyLCBvZmZzZXRdLCB0NQotICAgIGJwYiB0NSwgbWVtb3J5
U2l6ZSwgLmNvbnRpbnVhdGlvbgorICAgIGJwYiB0NSwgYm91bmRzQ2hlY2tpbmdTaXplLCAuY29u
dGludWF0aW9uCiAgICAgdGhyb3dFeGNlcHRpb24oT3V0T2ZCb3VuZHNNZW1vcnlBY2Nlc3MpCiAu
Y29udGludWF0aW9uOgogICAgIGFkZHAgbWVtb3J5QmFzZSwgcG9pbnRlcgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAppbmRleCA5NTg5ODljOTIzYTRmYWNiZjY1NzVj
ZGRmOWYxMmVkNWVhZTE4ZjI4Li5jMjdiMTU2YjE5YjAwZjQ5YmM2ZTBiOThmMDg0NmFiMDYyMzgw
ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcApAQCAtMzY3
LDYgKzM2Nyw3IEBAIHN0YXRpYyB2b2lkIG92ZXJyaWRlRGVmYXVsdHMoKQogCiAjaWYgIUVOQUJM
RShXRUJBU1NFTUJMWV9GQVNUX01FTU9SWSkKICAgICBPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZh
c3RNZW1vcnkoKSA9IGZhbHNlOworICAgIE9wdGlvbnM6OnVzZVNoYXJlZEFycmF5QnVmZmVyKCkg
PSBmYWxzZTsKICNlbmRpZgogCiAjaWYgIUhBVkUoTUFDSF9FWENFUFRJT05TKQpAQCAtNjU5LDEz
ICs2NjAsMTQgQEAgdm9pZCBPcHRpb25zOjppbml0aWFsaXplKCkKICNlbmRpZgogCiAjaWYgQVNB
Tl9FTkFCTEVEICYmIE9TKExJTlVYKSAmJiBFTkFCTEUoV0VCQVNTRU1CTFlfRkFTVF9NRU1PUlkp
Ci0gICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCkpIHsK
KyAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RNZW1vcnkoKSB8fCBP
cHRpb25zOjp1c2VTaGFyZWRBcnJheUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogYXNhbk9wdGlvbnMgPSBnZXRlbnYoIkFTQU5fT1BUSU9OUyIpOwogICAgICAgICAgICAg
ICAgIGJvb2wgb2tUb1VzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSA9IGFzYW5PcHRpb25zCiAgICAg
ICAgICAgICAgICAgICAgICYmIChzdHJzdHIoYXNhbk9wdGlvbnMsICJhbGxvd191c2VyX3NlZ3Zf
aGFuZGxlcj0xIikgfHwgc3Ryc3RyKGFzYW5PcHRpb25zLCAiaGFuZGxlX3NlZ3Y9MCIpKTsKICAg
ICAgICAgICAgICAgICBpZiAoIW9rVG9Vc2VXZWJBc3NlbWJseUZhc3RNZW1vcnkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJXQVJOSU5HOiBBU0FOIGludGVyZmVyZXMgd2l0aCBK
U0Mgc2lnbmFsIGhhbmRsZXJzOyB1c2VXZWJBc3NlbWJseUZhc3RNZW1vcnkgd2lsbCBiZSBkaXNh
YmxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJXQVJOSU5HOiBBU0FOIGlu
dGVyZmVyZXMgd2l0aCBKU0Mgc2lnbmFsIGhhbmRsZXJzOyB1c2VXZWJBc3NlbWJseUZhc3RNZW1v
cnkgYW5kIHVzZVNoYXJlZEFycmF5QnVmZmVyIHdpbGwgYmUgZGlzYWJsZWQuIik7CiAgICAgICAg
ICAgICAgICAgICAgIE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgIE9wdGlvbnM6OnVzZVNoYXJlZEFycmF5QnVmZmVyKCkgPSBm
YWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDQz
ZDBjODcyZWU0YzYzYjRkNTZiNmYwZTM0NjIzNTMzM2U4NGI3OTMuLmYwMzdkYTEzMzlkMzdjMmJi
YWUzYTllYjhjZjMwNjU0ZjEyMjIzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcApAQCAtNjgwLDcgKzY4MCw3IEBAIGNsYXNzIEFp
cklSR2VuZXJhdG9yIHsKICAgICBWZWN0b3I8VHlwZWRUbXA+IG1fbG9jYWxzOwogICAgIFZlY3Rv
cjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgbV91bmxpbmtlZFdhc21Ub1dhc21DYWxsczsgLy8g
TGlzdCBlYWNoIGNhbGwgc2l0ZSBhbmQgdGhlIGZ1bmN0aW9uIGluZGV4IHdob3NlIGFkZHJlc3Mg
aXQgc2hvdWxkIGJlIHBhdGNoZWQgd2l0aC4KICAgICBHUFJSZWcgbV9tZW1vcnlCYXNlR1BSIHsg
SW52YWxpZEdQUlJlZyB9OwotICAgIEdQUlJlZyBtX21lbW9yeVNpemVHUFIgeyBJbnZhbGlkR1BS
UmVnIH07CisgICAgR1BSUmVnIG1fYm91bmRzQ2hlY2tpbmdTaXplR1BSIHsgSW52YWxpZEdQUlJl
ZyB9OwogICAgIEdQUlJlZyBtX3dhc21Db250ZXh0SW5zdGFuY2VHUFIgeyBJbnZhbGlkR1BSUmVn
IH07CiAgICAgYm9vbCBtX21ha2VzQ2FsbHMgeyBmYWxzZSB9OwogCkBAIC03NzIsOCArNzcyLDgg
QEAgQWlySVJHZW5lcmF0b3I6OkFpcklSR2VuZXJhdG9yKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9u
JiBpbmZvLCBCMzo6UHJvY2VkdXJlJiBwcm8KICAgICAgICAgbV9jb2RlLnBpblJlZ2lzdGVyKG1f
d2FzbUNvbnRleHRJbnN0YW5jZUdQUik7CiAKICAgICBpZiAobW9kZSAhPSBNZW1vcnlNb2RlOjpT
aWduYWxpbmcpIHsKLSAgICAgICAgbV9tZW1vcnlTaXplR1BSID0gcGlubmVkUmVncy5zaXplUmVn
aXN0ZXI7Ci0gICAgICAgIG1fY29kZS5waW5SZWdpc3RlcihtX21lbW9yeVNpemVHUFIpOworICAg
ICAgICBtX2JvdW5kc0NoZWNraW5nU2l6ZUdQUiA9IHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdT
aXplUmVnaXN0ZXI7CisgICAgICAgIG1fY29kZS5waW5SZWdpc3RlcihtX2JvdW5kc0NoZWNraW5n
U2l6ZUdQUik7CiAgICAgfQogCiAgICAgbV9jb2RlLnNldE51bUVudHJ5cG9pbnRzKDEpOwpAQCAt
OTE4LDcgKzkxOCw3IEBAIHZvaWQgQWlySVJHZW5lcmF0b3I6OnJlc3RvcmVXZWJBc3NlbWJseUds
b2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0IHJlc3RvCiAgICAgICAgIGNvbnN0IFBp
bm5lZFJlZ2lzdGVySW5mbyogcGlubmVkUmVncyA9ICZQaW5uZWRSZWdpc3RlckluZm86OmdldCgp
OwogICAgICAgICBSZWdpc3RlclNldCBjbG9iYmVyczsKICAgICAgICAgY2xvYmJlcnMuc2V0KHBp
bm5lZFJlZ3MtPmJhc2VNZW1vcnlQb2ludGVyKTsKLSAgICAgICAgY2xvYmJlcnMuc2V0KHBpbm5l
ZFJlZ3MtPnNpemVSZWdpc3Rlcik7CisgICAgICAgIGNsb2JiZXJzLnNldChwaW5uZWRSZWdzLT5i
b3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7CiAgICAgICAgIGlmICghaXNBUk02NCgpKQogICAg
ICAgICAgICAgY2xvYmJlcnMuc2V0KFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMo
KSk7CiAKQEAgLTkzMywxMiArOTMzLDEyIEBAIHZvaWQgQWlySVJHZW5lcmF0b3I6OnJlc3RvcmVX
ZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0IHJlc3RvCiAgICAg
ICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbcGlubmVkUmVnc10gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAg
ICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsK
ICAgICAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy0+YmFzZU1lbW9yeVBv
aW50ZXI7Ci0gICAgICAgICAgICBHUFJSZWcgc2NyYXRjaE9yU2l6ZSA9IEdpZ2FjYWdlOjppc0Vu
YWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogcGlubmVk
UmVncy0+c2l6ZVJlZ2lzdGVyOworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hPckJvdW5kc0No
ZWNraW5nU2l6ZSA9IEdpZ2FjYWdlOjppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyBw
YXJhbXMuZ3BTY3JhdGNoKDApIDogcGlubmVkUmVncy0+Ym91bmRzQ2hlY2tpbmdTaXplUmVnaXN0
ZXI7CiAKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJh
bXNbMF0uZ3ByKCksIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBpbm5l
ZFJlZ3MtPnNpemVSZWdpc3Rlcik7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MocGFyYW1zWzBdLmdwcigpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3Vu
ZHNDaGVja2luZ1NpemUoKSksIHBpbm5lZFJlZ3MtPmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVy
KTsKICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNb
MF0uZ3ByKCksIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7
CiAKLSAgICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZl
LCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLT5zaXplUmVnaXN0ZXIsIHNjcmF0Y2hPclNpemUpOwor
ICAgICAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJh
c2VNZW1vcnksIHBpbm5lZFJlZ3MtPmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyLCBzY3JhdGNo
T3JCb3VuZHNDaGVja2luZ1NpemUpOwogICAgICAgICB9KTsKIAogICAgICAgICBlbWl0UGF0Y2hw
b2ludChibG9jaywgcGF0Y2hwb2ludCwgVG1wKCksIGluc3RhbmNlKTsKQEAgLTExNjgsOCArMTE2
OCwxMiBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KEV4cHJlc3Npb25U
eXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKICAgICBhdXRvIHRlbXAxID0gZzY0KCk7CiAg
ICAgYXV0byB0ZW1wMiA9IGc2NCgpOwogCi0gICAgUkVMRUFTRV9BU1NFUlQoQXJnOjppc1ZhbGlk
QWRkckZvcm0oSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpLCBCMzo6V2lkdGg2
NCkpOwotICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoaW5zdGFuY2VWYWx1ZSgpLCBJbnN0YW5j
ZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCB0ZW1wMSk7CisgICAgUkVMRUFTRV9BU1NF
UlQoQXJnOjppc1ZhbGlkQWRkckZvcm0oSW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCksIEIzOjpX
aWR0aDY0KSk7CisgICAgUkVMRUFTRV9BU1NFUlQoQXJnOjppc1ZhbGlkQWRkckZvcm0oTWVtb3J5
OjpvZmZzZXRPZkhhbmRsZSgpLCBCMzo6V2lkdGg2NCkpOworICAgIFJFTEVBU0VfQVNTRVJUKEFy
Zzo6aXNWYWxpZEFkZHJGb3JtKE1lbW9yeUhhbmRsZTo6b2Zmc2V0T2ZTaXplKCksIEIzOjpXaWR0
aDY0KSk7CisgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcihpbnN0YW5jZVZhbHVlKCksIEluc3Rh
bmNlOjpvZmZzZXRPZk1lbW9yeSgpKSwgdGVtcDEpOworICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFk
ZHIodGVtcDEsIE1lbW9yeTo6b2Zmc2V0T2ZIYW5kbGUoKSksIHRlbXAxKTsKKyAgICBhcHBlbmQo
TW92ZSwgQXJnOjphZGRyKHRlbXAxLCBNZW1vcnlIYW5kbGU6Om9mZnNldE9mU2l6ZSgpKSwgdGVt
cDEpOwogICAgIGNvbnN0ZXhwciB1aW50MzJfdCBzaGlmdFZhbHVlID0gMTY7CiAgICAgc3RhdGlj
X2Fzc2VydChQYWdlQ291bnQ6OnBhZ2VTaXplID09IDF1bGwgPDwgc2hpZnRWYWx1ZSwgIlRoaXMg
bXVzdCBob2xkIGZvciB0aGUgY29kZSBiZWxvdyB0byBiZSBjb3JyZWN0LiIpOwogICAgIGFwcGVu
ZChNb3ZlLCBBcmc6OmltbSgxNiksIHRlbXAyKTsKQEAgLTEzNjMsMTUgKzEzNjcsMTYgQEAgaW5s
aW5lIEFpcklSR2VuZXJhdG9yOjpFeHByZXNzaW9uVHlwZSBBaXJJUkdlbmVyYXRvcjo6ZW1pdENo
ZWNrQW5kUHJlcGFyZVBvaW50ZXIKIAogICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgY2FzZSBN
ZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZzogewotICAgICAgICAvLyBXZSdyZSBub3QgdXNpbmcg
c2lnbmFsIGhhbmRsaW5nIGF0IGFsbCwgd2UgbXVzdCB0aGVyZWZvcmUgY2hlY2sgdGhhdCBubyBt
ZW1vcnkgYWNjZXNzIGV4Y2VlZHMgdGhlIGN1cnJlbnQgbWVtb3J5IHNpemUuCi0gICAgICAgIEFT
U0VSVChtX21lbW9yeVNpemVHUFIpOworICAgICAgICAvLyBJbiBib3VuZCBjaGVja2luZyBtb2Rl
LCB3aGlsZSBzaGFyZWQgd2FzbSBtZW1vcnkgcGFydGlhbGx5IHJlbGllcyBvbiBzaWduYWwgaGFu
ZGxlciB0b28sIHdlIG5lZWQgdG8gcGVyZm9ybSBib3VuZCBjaGVja2luZworICAgICAgICAvLyB0
byBlbnN1cmUgdGhhdCBubyBtZW1vcnkgYWNjZXNzIGV4Y2VlZHMgdGhlIGN1cnJlbnQgbWVtb3J5
IHNpemUuCisgICAgICAgIEFTU0VSVChtX2JvdW5kc0NoZWNraW5nU2l6ZUdQUik7CiAgICAgICAg
IEFTU0VSVChzaXplT2ZPcGVyYXRpb24gKyBvZmZzZXQgPiBvZmZzZXQpOwogICAgICAgICBhdXRv
IHRlbXAgPSBnNjQoKTsKICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YmlnSW1tKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihzaXplT2ZPcGVyYXRpb24pICsgb2Zmc2V0IC0gMSksIHRlbXApOwogICAg
ICAgICBhcHBlbmQoQWRkNjQsIHJlc3VsdCwgdGVtcCk7CiAKICAgICAgICAgZW1pdENoZWNrKFsm
XSB7Ci0gICAgICAgICAgICByZXR1cm4gSW5zdChCcmFuY2g2NCwgbnVsbHB0ciwgQXJnOjpyZWxD
b25kKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwpLCB0ZW1wLCBUbXAobV9tZW1vcnlTaXpl
R1BSKSk7CisgICAgICAgICAgICByZXR1cm4gSW5zdChCcmFuY2g2NCwgbnVsbHB0ciwgQXJnOjpy
ZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwpLCB0ZW1wLCBUbXAobV9ib3VuZHND
aGVja2luZ1NpemVHUFIpKTsKICAgICAgICAgfSwgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgIHRoaXMtPmVt
aXRUaHJvd0V4Y2VwdGlvbihqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzTWVtb3J5QWNj
ZXNzKTsKICAgICAgICAgfSk7CkBAIC0yMTU0LDcgKzIxNTksNyBAQCBhdXRvIEFpcklSR2VuZXJh
dG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2ln
bmF0dXJlLAogICAgICAgICBhdXRvKiBwYXRjaHBvaW50ID0gZW1pdENhbGxQYXRjaHBvaW50KG1f
Y3VycmVudEJsb2NrLCBzaWduYXR1cmUsIHJlc3VsdHMsIGFyZ3MpOwogICAgICAgICAvLyBXZSBu
ZWVkIHRvIGNsb2JiZXIgdGhlIHNpemUgcmVnaXN0ZXIgc2luY2UgdGhlIExMSW50IGFsd2F5cyBi
b3VuZHMgY2hlY2tzCiAgICAgICAgIGlmIChtX21vZGUgPT0gTWVtb3J5TW9kZTo6U2lnbmFsaW5n
KQotICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXQgeyBQaW5u
ZWRSZWdpc3RlckluZm86OmdldCgpLnNpemVSZWdpc3RlciB9KTsKKyAgICAgICAgICAgIHBhdGNo
cG9pbnQtPmNsb2JiZXJMYXRlKFJlZ2lzdGVyU2V0IHsgUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQo
KS5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciB9KTsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKFt1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgZnVuY3Rpb25JbmRleF0gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OwogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQudGhyZWFkU2FmZVBh
dGNoYWJsZU5lYXJDYWxsKCk7CkBAIC0yMjc4LDEzICsyMjgzLDEzIEBAIGF1dG8gQWlySVJHZW5l
cmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1
cmUmIHNpZ25hCiAgICAgICAgICAgICBqaXQuc3RvcmVXYXNtQ29udGV4dEluc3RhbmNlKG5ld0Nv
bnRleHRJbnN0YW5jZSk7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQg
bW9yZSB0aGFuIG9uZSBtZW1vcnkgc2l6ZSByZWdpc3RlcgogICAgICAgICAgICAgLy8gICBzZWU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKLSAgICAgICAg
ICAgIEFTU0VSVChwaW5uZWRSZWdzLnNpemVSZWdpc3RlciAhPSBuZXdDb250ZXh0SW5zdGFuY2Up
OwotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hPclNpemUgPSBHaWdhY2FnZTo6aXNFbmFibGVk
KEdpZ2FjYWdlOjpQcmltaXRpdmUpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IHBpbm5lZFJlZ3Mu
c2l6ZVJlZ2lzdGVyOworICAgICAgICAgICAgQVNTRVJUKHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tp
bmdTaXplUmVnaXN0ZXIgIT0gbmV3Q29udGV4dEluc3RhbmNlKTsKKyAgICAgICAgICAgIEdQUlJl
ZyBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2Fj
YWdlOjpQcmltaXRpdmUpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IHBpbm5lZFJlZ3MuYm91bmRz
Q2hlY2tpbmdTaXplUmVnaXN0ZXI7CiAKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hl
ZE1lbW9yeVNpemUoKSksIHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyKTsgLy8gTWVtb3J5IHNpemUu
CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobmV3Q29udGV4
dEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSks
IHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIpOyAvLyBCb3VuZCBjaGVja2lu
ZyBzaXplLgogICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG5l
d0NvbnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5KCkpLCBiYXNl
TWVtb3J5KTsgLy8gTWVtb3J5Ojp2b2lkKi4KIAotICAgICAgICAgICAgaml0LmNhZ2VDb25kaXRp
b25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJlZ3Muc2l6ZVJl
Z2lzdGVyLCBzY3JhdGNoT3JTaXplKTsKKyAgICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxs
eShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNr
aW5nU2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOwogICAgICAgICB9
KTsKIAogICAgICAgICBlbWl0UGF0Y2hwb2ludChkb0NvbnRleHRTd2l0Y2gsIHBhdGNocG9pbnQs
IFRtcCgpLCBuZXdDb250ZXh0SW5zdGFuY2UsIGluc3RhbmNlVmFsdWUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMzBiM2M3
NzIzMmYyZGVlNWY0NTkzYTRiYzg5OTU2NTdmMTM5OGRmYi4uOTZmM2FhY2Y5NmI0MjIwMTE4ZWJj
ZmU4ZTFjMTg1YzJkN2YzZWNlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMzI1LDcgKzMyNSw3IEBAIGNsYXNzIEIzSVJHZW5l
cmF0b3IgewogICAgIEluc2VydGlvblNldCBtX2NvbnN0YW50SW5zZXJ0aW9uVmFsdWVzOwogICAg
IFZhbHVlKiBtX2ZyYW1lUG9pbnRlciB7IG51bGxwdHIgfTsKICAgICBHUFJSZWcgbV9tZW1vcnlC
YXNlR1BSIHsgSW52YWxpZEdQUlJlZyB9OwotICAgIEdQUlJlZyBtX21lbW9yeVNpemVHUFIgeyBJ
bnZhbGlkR1BSUmVnIH07CisgICAgR1BSUmVnIG1fYm91bmRzQ2hlY2tpbmdTaXplR1BSIHsgSW52
YWxpZEdQUlJlZyB9OwogICAgIEdQUlJlZyBtX3dhc21Db250ZXh0SW5zdGFuY2VHUFIgeyBJbnZh
bGlkR1BSUmVnIH07CiAgICAgYm9vbCBtX21ha2VzQ2FsbHMgeyBmYWxzZSB9OwogCkBAIC00MDgs
OCArNDA4LDggQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihjb25zdCBNb2R1bGVJbmZv
cm1hdGlvbiYgaW5mbywgUHJvY2VkdXJlJiBwcm9jZWR1cmUKICAgICAgICAgbV9wcm9jLnBpblJl
Z2lzdGVyKG1fd2FzbUNvbnRleHRJbnN0YW5jZUdQUik7CiAKICAgICBpZiAobW9kZSAhPSBNZW1v
cnlNb2RlOjpTaWduYWxpbmcpIHsKLSAgICAgICAgbV9tZW1vcnlTaXplR1BSID0gcGlubmVkUmVn
cy5zaXplUmVnaXN0ZXI7Ci0gICAgICAgIG1fcHJvYy5waW5SZWdpc3RlcihtX21lbW9yeVNpemVH
UFIpOworICAgICAgICBtX2JvdW5kc0NoZWNraW5nU2l6ZUdQUiA9IHBpbm5lZFJlZ3MuYm91bmRz
Q2hlY2tpbmdTaXplUmVnaXN0ZXI7CisgICAgICAgIG1fcHJvYy5waW5SZWdpc3RlcihtX2JvdW5k
c0NoZWNraW5nU2l6ZUdQUik7CiAgICAgfQogCiAgICAgaWYgKGluZm8ubWVtb3J5KSB7CkBAIC00
MTcsNyArNDE3LDcgQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihjb25zdCBNb2R1bGVJ
bmZvcm1hdGlvbiYgaW5mbywgUHJvY2VkdXJlJiBwcm9jZWR1cmUKICAgICAgICAgICAgIEFsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAg
IHN3aXRjaCAobV9tb2RlKSB7CiAgICAgICAgICAgICBjYXNlIE1lbW9yeU1vZGU6OkJvdW5kc0No
ZWNraW5nOgotICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocGlubmVkR1BSLCBtX21lbW9y
eVNpemVHUFIgPT0gcGlubmVkR1BSKTsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHBp
bm5lZEdQUiwgbV9ib3VuZHNDaGVja2luZ1NpemVHUFIgPT0gcGlubmVkR1BSKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgTWVtb3J5TW9kZTo6U2lnbmFsaW5nOgog
ICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocGlubmVkR1BSLCBJbnZhbGlkR1BSUmVnID09
IHBpbm5lZEdQUik7CkBAIC01NDUsNyArNTQ1LDcgQEAgdm9pZCBCM0lSR2VuZXJhdG9yOjpyZXN0
b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVkU3RhY2tMaW1pdCByZXN0b3IK
ICAgICAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvKiBwaW5uZWRSZWdzID0gJlBpbm5lZFJl
Z2lzdGVySW5mbzo6Z2V0KCk7CiAgICAgICAgIFJlZ2lzdGVyU2V0IGNsb2JiZXJzOwogICAgICAg
ICBjbG9iYmVycy5zZXQocGlubmVkUmVncy0+YmFzZU1lbW9yeVBvaW50ZXIpOwotICAgICAgICBj
bG9iYmVycy5zZXQocGlubmVkUmVncy0+c2l6ZVJlZ2lzdGVyKTsKKyAgICAgICAgY2xvYmJlcnMu
c2V0KHBpbm5lZFJlZ3MtPmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsKICAgICAgICAgaWYg
KCFpc0FSTTY0KCkpCiAgICAgICAgICAgICBjbG9iYmVycy5zZXQoUmVnaXN0ZXJTZXQ6Om1hY3Jv
U2NyYXRjaFJlZ2lzdGVycygpKTsKIApAQCAtNTYxLDEyICs1NjEsMTIgQEAgdm9pZCBCM0lSR2Vu
ZXJhdG9yOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVkU3RhY2tM
aW1pdCByZXN0b3IKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFtwaW5uZWRSZWdz
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgewogICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFs
bG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRS
ZWdzLT5iYXNlTWVtb3J5UG9pbnRlcjsKLSAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoT3JTaXpl
ID0gR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IHBhcmFtcy5ncFNj
cmF0Y2goMCkgOiBwaW5uZWRSZWdzLT5zaXplUmVnaXN0ZXI7CisgICAgICAgICAgICBHUFJSZWcg
c2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplID0gR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2Fn
ZTo6UHJpbWl0aXZlKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBwaW5uZWRSZWdzLT5ib3VuZHND
aGVja2luZ1NpemVSZWdpc3RlcjsKIAotICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHBhcmFtc1swXS5ncHIoKSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVt
b3J5U2l6ZSgpKSwgcGlubmVkUmVncy0+c2l6ZVJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCksIEluc3RhbmNlOjpv
ZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpKSwgcGlubmVkUmVncy0+Ym91bmRzQ2hl
Y2tpbmdTaXplUmVnaXN0ZXIpOwogICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHBhcmFtc1swXS5ncHIoKSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5
KCkpLCBiYXNlTWVtb3J5KTsKIAotICAgICAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdp
Z2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJlZ3MtPnNpemVSZWdpc3Rlciwg
c2NyYXRjaE9yU2l6ZSk7CisgICAgICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNh
Z2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgcGlubmVkUmVncy0+Ym91bmRzQ2hlY2tpbmdTaXpl
UmVnaXN0ZXIsIHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSk7CiAgICAgICAgIH0pOwogICAg
IH0KIH0KQEAgLTc5Myw3ICs3OTMsOSBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1v
cnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiBhdXRvIEIz
SVJHZW5lcmF0b3I6OmFkZEN1cnJlbnRNZW1vcnkoRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4g
UGFydGlhbFJlc3VsdAogewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKHN0YXRp
Y19jYXN0PE1lbW9yeSo+KG51bGxwdHIpLT5zaXplKCkpKSA9PSBzaXplb2YodWludDY0X3QpLCAi
Y29kZWdlbiByZWxpZXMgb24gdGhpcyBzaXplIik7Ci0gICAgVmFsdWUqIHNpemUgPSBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDY0LCBvcmln
aW4oKSwgaW5zdGFuY2VWYWx1ZSgpLCBzYWZlQ2FzdDxpbnQzMl90PihJbnN0YW5jZTo6b2Zmc2V0
T2ZDYWNoZWRNZW1vcnlTaXplKCkpKTsKKyAgICBWYWx1ZSogbWVtb3J5ID0gbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQ2NCwgb3JpZ2luKCks
IGluc3RhbmNlVmFsdWUoKSwgc2FmZUNhc3Q8aW50MzJfdD4oSW5zdGFuY2U6Om9mZnNldE9mTWVt
b3J5KCkpKTsKKyAgICBWYWx1ZSogaGFuZGxlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQ2NCwgb3JpZ2luKCksIG1lbW9yeSwgc2FmZUNh
c3Q8aW50MzJfdD4oTWVtb3J5OjpvZmZzZXRPZkhhbmRsZSgpKSk7CisgICAgVmFsdWUqIHNpemUg
PSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIElu
dDY0LCBvcmlnaW4oKSwgaGFuZGxlLCBzYWZlQ2FzdDxpbnQzMl90PihNZW1vcnlIYW5kbGU6Om9m
ZnNldE9mU2l6ZSgpKSk7CiAKICAgICBjb25zdGV4cHIgdWludDMyX3Qgc2hpZnRWYWx1ZSA9IDE2
OwogICAgIHN0YXRpY19hc3NlcnQoUGFnZUNvdW50OjpwYWdlU2l6ZSA9PSAxdWxsIDw8IHNoaWZ0
VmFsdWUsICJUaGlzIG11c3QgaG9sZCBmb3IgdGhlIGNvZGUgYmVsb3cgdG8gYmUgY29ycmVjdC4i
KTsKQEAgLTk1NCw5ICs5NTYsOSBAQCBpbmxpbmUgVmFsdWUqIEIzSVJHZW5lcmF0b3I6OmVtaXRD
aGVja0FuZFByZXBhcmVQb2ludGVyKEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsCiAgICAgc3dpdGNo
IChtX21vZGUpIHsKICAgICBjYXNlIE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nOiB7CiAgICAg
ICAgIC8vIFdlJ3JlIG5vdCB1c2luZyBzaWduYWwgaGFuZGxpbmcgYXQgYWxsLCB3ZSBtdXN0IHRo
ZXJlZm9yZSBjaGVjayB0aGF0IG5vIG1lbW9yeSBhY2Nlc3MgZXhjZWVkcyB0aGUgY3VycmVudCBt
ZW1vcnkgc2l6ZS4KLSAgICAgICAgQVNTRVJUKG1fbWVtb3J5U2l6ZUdQUik7CisgICAgICAgIEFT
U0VSVChtX2JvdW5kc0NoZWNraW5nU2l6ZUdQUik7CiAgICAgICAgIEFTU0VSVChzaXplT2ZPcGVy
YXRpb24gKyBvZmZzZXQgPiBvZmZzZXQpOwotICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PFdhc21Cb3VuZHNDaGVja1ZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBtX21lbW9yeVNpemVH
UFIsIHBvaW50ZXIsIHNpemVPZk9wZXJhdGlvbiArIG9mZnNldCAtIDEpOworICAgICAgICBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PFdhc21Cb3VuZHNDaGVja1ZhbHVlPihtX3Byb2MsIG9yaWdp
bigpLCBtX2JvdW5kc0NoZWNraW5nU2l6ZUdQUiwgcG9pbnRlciwgc2l6ZU9mT3BlcmF0aW9uICsg
b2Zmc2V0IC0gMSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTcxMCw3ICsxNzEyLDcg
QEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNv
bnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLAogCiAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0
byBjbG9iYmVyIHRoZSBzaXplIHJlZ2lzdGVyIHNpbmNlIHRoZSBMTEludCBhbHdheXMgYm91bmRz
IGNoZWNrcwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gTWVtb3J5TW9kZTo6U2lnbmFs
aW5nKQotICAgICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3Rl
clNldCB7IFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkuc2l6ZVJlZ2lzdGVyIH0pOworICAgICAg
ICAgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldCB7IFBpbm5l
ZFJlZ2lzdGVySW5mbzo6Z2V0KCkuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgfSk7CiAgICAg
ICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFt1bmxpbmtlZFdhc21Ub1dhc21D
YWxscywgZnVuY3Rpb25JbmRleF0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LnRocmVhZFNhZmVQYXRjaGFibGVOZWFyQ2Fs
bCgpOwpAQCAtMTgzMSwxNiArMTgzMywxNiBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJ
bmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdAogICAg
ICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG9sZENvbnRleHRJbnN0
YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkU3RhY2tMaW1pdCgpKSwgYmFzZU1lbW9yeSk7
CiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoYmFzZU1lbW9yeSwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKG5ld0NvbnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkU3RhY2tMaW1p
dCgpKSk7CiAgICAgICAgICAgICBqaXQuc3RvcmVXYXNtQ29udGV4dEluc3RhbmNlKG5ld0NvbnRl
eHRJbnN0YW5jZSk7Ci0gICAgICAgICAgICBBU1NFUlQocGlubmVkUmVncy5zaXplUmVnaXN0ZXIg
IT0gYmFzZU1lbW9yeSk7CisgICAgICAgICAgICBBU1NFUlQocGlubmVkUmVncy5ib3VuZHNDaGVj
a2luZ1NpemVSZWdpc3RlciAhPSBiYXNlTWVtb3J5KTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgc3VwcG9ydCBtb3JlIHRoYW4gb25lIG1lbW9yeSBzaXplIHJlZ2lzdGVyCiAgICAg
ICAgICAgICAvLyAgIHNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2Mjk1MgotICAgICAgICAgICAgQVNTRVJUKHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyICE9IG5l
d0NvbnRleHRJbnN0YW5jZSk7Ci0gICAgICAgICAgICBHUFJSZWcgc2NyYXRjaE9yU2l6ZSA9IEdp
Z2FjYWdlOjppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyBwYXJhbXMuZ3BTY3JhdGNo
KDApIDogcGlubmVkUmVncy5zaXplUmVnaXN0ZXI7CisgICAgICAgICAgICBBU1NFUlQocGlubmVk
UmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciAhPSBuZXdDb250ZXh0SW5zdGFuY2UpOwor
ICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSA9IEdpZ2FjYWdl
Ojppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDog
cGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlcjsKIAotICAgICAgICAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG5ld0NvbnRleHRJbnN0YW5jZSwgSW5zdGFu
Y2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSwgcGlubmVkUmVncy5zaXplUmVnaXN0ZXIp
OyAvLyBNZW1vcnkgc2l6ZS4KKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6
QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZEJvdW5k
c0NoZWNraW5nU2l6ZSgpKSwgcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7
IC8vIE1lbW9yeSBzaXplLgogICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKG5ld0NvbnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5
KCkpLCBiYXNlTWVtb3J5KTsgLy8gTWVtb3J5Ojp2b2lkKi4KIAotICAgICAgICAgICAgaml0LmNh
Z2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJl
Z3Muc2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JTaXplKTsKKyAgICAgICAgICAgIGppdC5jYWdlQ29u
ZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLmJv
dW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOwog
ICAgICAgICB9KTsKICAgICAgICAgZG9Db250ZXh0U3dpdGNoLT5hcHBlbmROZXdDb250cm9sVmFs
dWUobV9wcm9jLCBKdW1wLCBvcmlnaW4oKSwgY29udGludWF0aW9uKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCmluZGV4IDk0MWQwMTYzN2NjYzkwMjdiYjMw
OTRmOWYyY2NjYjJlNmNkMzFhOTIuLjY1NzU5YTdjYzA5NTRkNmFiNzU5ZWI0YThhOGMxNTE5NGNi
OWNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5n
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKQEAg
LTQ5LDkgKzQ5LDkgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0
clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9XYXNtKHVuc2kKICAgICBHUFJSZWcgYmFzZU1l
bW9yeSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7CiAgICAgQVNTRVJUKGJhc2VNZW1v
cnkgIT0gR1BSUmVnOjpJbnZhbGlkR1BSUmVnKTsKICAgICBBU1NFUlQoYmFzZU1lbW9yeSAhPSBz
Y3JhdGNoKTsKLSAgICBBU1NFUlQocGlubmVkUmVncy5zaXplUmVnaXN0ZXIgIT0gYmFzZU1lbW9y
eSk7Ci0gICAgQVNTRVJUKHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyICE9IHNjcmF0Y2gpOwotICAg
IEdQUlJlZyBzaXplUmVnQXNTY3JhdGNoID0gcGlubmVkUmVncy5zaXplUmVnaXN0ZXI7CisgICAg
QVNTRVJUKHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgIT0gYmFzZU1lbW9y
eSk7CisgICAgQVNTRVJUKHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgIT0g
c2NyYXRjaCk7CisgICAgR1BSUmVnIHNpemVSZWdBc1NjcmF0Y2ggPSBwaW5uZWRSZWdzLmJvdW5k
c0NoZWNraW5nU2l6ZVJlZ2lzdGVyOwogICAgIEFTU0VSVChzaXplUmVnQXNTY3JhdGNoICE9IEdQ
UlJlZzo6SW52YWxpZEdQUlJlZyk7CiAKICAgICAvLyBCMydzIGNhbGwgY29kZWdlbiBlbnN1cmVz
IHRoYXQgdGhlIEpTQ2VsbCBpcyBhIFdlYkFzc2VtYmx5RnVuY3Rpb24uCkBAIC02OCwxMSArNjgs
MTEgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJp
bmRpbmdGYWlsdXJlPiB3YXNtVG9XYXNtKHVuc2kKICAgICAvLyBGSVhNRSB0aGUgZm9sbG93aW5n
IGNvZGUgYXNzdW1lcyB0aGF0IGFsbCBXYXNtOjpJbnN0YW5jZSBoYXZlIHRoZSBzYW1lIHBpbm5l
ZCByZWdpc3RlcnMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5
NTIKICAgICAvLyBTZXQgdXAgdGhlIGNhbGxlZSdzIGJhc2VNZW1vcnkgcmVnaXN0ZXIgYXMgd2Vs
bCBhcyB0aGUgbWVtb3J5IHNpemUgcmVnaXN0ZXJzLgogICAgIHsKLSAgICAgICAgR1BSUmVnIHNj
cmF0Y2hPclNpemUgPSAhR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/
IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyIDogd2FzbUNhbGxpbmdDb252ZW50aW9uKCkucHJvbG9n
dWVTY3JhdGNoR1BSc1sxXTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hPckJvdW5kc0NoZWNraW5n
U2l6ZSA9ICFHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUpID8gcGlubmVk
UmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciA6IHdhc21DYWxsaW5nQ29udmVudGlvbigp
LnByb2xvZ3VlU2NyYXRjaEdQUnNbMV07CiAKLSAgICAgICAgaml0LmxvYWRQdHIoSklUOjpBZGRy
ZXNzKGJhc2VNZW1vcnksIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUo
KSksIHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyKTsgLy8gTWVtb3J5IHNpemUuCisgICAgICAgIGpp
dC5sb2FkUHRyKEpJVDo6QWRkcmVzcyhiYXNlTWVtb3J5LCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0
T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSksIHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdT
aXplUmVnaXN0ZXIpOyAvLyBCb3VuZCBjaGVja2luZyBzaXplLgogICAgICAgICBqaXQubG9hZFB0
cihKSVQ6OkFkZHJlc3MoYmFzZU1lbW9yeSwgV2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVk
TWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsgLy8gV2FzbTo6TWVtb3J5OjpUYWdnZWRBcnJheVN0b3Jh
Z2VQdHI8dm9pZD4gKHZvaWQqKS4KLSAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2Fj
YWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyLCBzY3Jh
dGNoT3JTaXplKTsKKyAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmlt
aXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIs
IHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSk7CiAgICAgfQogCiAgICAgLy8gVGFpbCBjYWxs
IGludG8gdGhlIGNhbGxlZSBXZWJBc3NlbWJseSBmdW5jdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKaW5kZXggM2Vh
MDA4ODkwMWI2YzI3Y2Y2NWIwYjQ3NGRkOGRjOTVjNzgxNTFmZi4uMDRjMzRiN2U4YWU2ZDdkZTZh
YTlhZjQwOTM2YThjM2UyYTU3NGM0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKQEAgLTYzLDI5ICs2Myw0MCBAQCBz
dGF0aWMgU2lnbmFsQWN0aW9uIHRyYXBIYW5kbGVyKFNpZ25hbCwgU2lnSW5mbyYgc2lnSW5mbywg
UGxhdGZvcm1SZWdpc3RlcnMmIGNvbgogICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhh
bmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgInN0YXJ0aW5nIGhhbmRsZXIgZm9yIGZhdWx0IGF0OiAi
LCBSYXdQb2ludGVyKGZhdWx0aW5nSW5zdHJ1Y3Rpb24pKTsKIAogICAgIGRhdGFMb2dMbklmKFdh
c21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkpJVCBtZW1vcnkgc3RhcnQ6
ICIsIFJhd1BvaW50ZXIoc3RhcnRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2woKSksICIgZW5k
OiAiLCBSYXdQb2ludGVyKGVuZE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCgpKSk7Ci0gICAg
Ly8gRmlyc3Qgd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgYXJlIGluIEpJVCBjb2RlIGJlZm9yZSB3
ZSBjYW4gYXF1aXJlIGFueSBsb2Nrcy4gT3RoZXJ3aXNlLAorICAgIGRhdGFMb2dMbklmKFdhc21G
YXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgIldhc21MTEludCBtZW1vcnkgc3Rh
cnQ6ICIsIFJhd1BvaW50ZXIodW50YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWc+KExM
SW50Ojp3YXNtTExJbnRQQ1JhbmdlU3RhcnQpKSwgIiBlbmQ6ICIsIFJhd1BvaW50ZXIodW50YWdD
b2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWc+KExMSW50Ojp3YXNtTExJbnRQQ1JhbmdlRW5k
KSkpOworICAgIC8vIEZpcnN0IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGFyZSBpbiBKSVQgY29k
ZSBvciBXYXNtIExMSW50IGNvZGUgYmVmb3JlIHdlIGNhbiBhcXVpcmUgYW55IGxvY2tzLiBPdGhl
cndpc2UsCiAgICAgLy8gd2UgbWlnaHQgaGF2ZSBjcmFzaGVkIGluIGNvZGUgdGhhdCBpcyBhbHJl
YWR5IGhvbGRpbmcgb25lIG9mIHRoZSBsb2NrcyB3ZSB3YW50IHRvIGFxdWlyZS4KICAgICBhc3Nl
cnRJc05vdFRhZ2dlZChmYXVsdGluZ0luc3RydWN0aW9uKTsKLSAgICBpZiAoaXNKSVRQQyhmYXVs
dGluZ0luc3RydWN0aW9uKSkgewotICAgICAgICBib29sIGZhdWx0ZWRJbkFjdGl2ZUZhc3RNZW1v
cnkgPSBmYWxzZTsKKyAgICBpZiAoaXNKSVRQQyhmYXVsdGluZ0luc3RydWN0aW9uKSB8fCBMTElu
dDo6aXNXYXNtTExJbnRQQyhmYXVsdGluZ0luc3RydWN0aW9uKSkgeworICAgICAgICBib29sIGZh
dWx0ZWRJbkFjdGl2ZUdyb3dhYmxlTWVtb3J5ID0gZmFsc2U7CiAgICAgICAgIHsKICAgICAgICAg
ICAgIHZvaWQqIGZhdWx0aW5nQWRkcmVzcyA9IHNpZ0luZm8uZmF1bHRpbmdBZGRyZXNzOwogICAg
ICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJi
b3NlLCAiY2hlY2tpbmcgZmF1bHRpbmcgYWRkcmVzczogIiwgUmF3UG9pbnRlcihmYXVsdGluZ0Fk
ZHJlc3MpLCAiIGlzIGluIGFuIGFjdGl2ZSBmYXN0IG1lbW9yeSIpOwotICAgICAgICAgICAgZmF1
bHRlZEluQWN0aXZlRmFzdE1lbW9yeSA9IFdhc206Ok1lbW9yeTo6YWRkcmVzc0lzSW5BY3RpdmVG
YXN0TWVtb3J5KGZhdWx0aW5nQWRkcmVzcyk7CisgICAgICAgICAgICBmYXVsdGVkSW5BY3RpdmVH
cm93YWJsZU1lbW9yeSA9IFdhc206Ok1lbW9yeTo6YWRkcmVzc0lzSW5BY3RpdmVHcm93YWJsZU1l
bW9yeShmYXVsdGluZ0FkZHJlc3MpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChmYXVsdGVkSW5B
Y3RpdmVGYXN0TWVtb3J5KSB7CisgICAgICAgIGlmIChmYXVsdGVkSW5BY3RpdmVHcm93YWJsZU1l
bW9yeSkgewogICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlcklu
dGVybmFsOjp2ZXJib3NlLCAiZm91bmQgYWN0aXZlIGZhc3QgbWVtb3J5IGZvciBmYXVsdGluZyBh
ZGRyZXNzIik7Ci0gICAgICAgICAgICBhdXRvJiBjYWxsZWVSZWdpc3RyeSA9IENhbGxlZVJlZ2lz
dHJ5OjpzaW5nbGV0b24oKTsKLSAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2Fs
bGVlUmVnaXN0cnkuZ2V0TG9jaygpKTsKLSAgICAgICAgICAgIGZvciAoYXV0byogY2FsbGVlIDog
Y2FsbGVlUmVnaXN0cnkuYWxsQ2FsbGVlcyhsb2NrZXIpKSB7Ci0gICAgICAgICAgICAgICAgYXV0
byBbc3RhcnQsIGVuZF0gPSBjYWxsZWUtPnJhbmdlKCk7Ci0gICAgICAgICAgICAgICAgZGF0YUxv
Z0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAiZnVuY3Rpb24g
c3RhcnQ6ICIsIFJhd1BvaW50ZXIoc3RhcnQpLCAiIGVuZDogIiwgUmF3UG9pbnRlcihlbmQpKTsK
LSAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPD0gZmF1bHRpbmdJbnN0cnVjdGlvbiAmJiBmYXVs
dGluZ0luc3RydWN0aW9uIDwgZW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklm
KFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZvdW5kIG1hdGNoIik7
Ci0gICAgICAgICAgICAgICAgICAgIE1hY2hpbmVDb250ZXh0Ojphcmd1bWVudFBvaW50ZXI8MT4o
Y29udGV4dCkgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+
KFdhc206OkNvbnRleHQ6OnVzZUZhc3RUTFMoKSkpOwotICAgICAgICAgICAgICAgICAgICBNYWNo
aW5lQ29udGV4dDo6c2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQsIExMSW50OjpnZXRDb2Rl
UHRyPENGdW5jdGlvblB0clRhZz4od2FzbV90aHJvd19mcm9tX2ZhdWx0X2hhbmRsZXJfdHJhbXBv
bGluZSkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2lnbmFsQWN0aW9uOjpIYW5kbGVk
OworCisgICAgICAgICAgICBhdXRvIGRvZXNGYXVsdEluV2FzbSA9IFtdKHZvaWQqIGZhdWx0aW5n
SW5zdHJ1Y3Rpb24pIHsKKyAgICAgICAgICAgICAgICBpZiAoTExJbnQ6OmlzV2FzbUxMSW50UEMo
ZmF1bHRpbmdJbnN0cnVjdGlvbikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgIGF1dG8mIGNhbGxlZVJlZ2lzdHJ5ID0gQ2FsbGVlUmVnaXN0cnk6OnNp
bmdsZXRvbigpOworICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2FsbGVl
UmVnaXN0cnkuZ2V0TG9jaygpKTsKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGNhbGxlZSA6
IGNhbGxlZVJlZ2lzdHJ5LmFsbENhbGxlZXMobG9ja2VyKSkgeworICAgICAgICAgICAgICAgICAg
ICBhdXRvIFtzdGFydCwgZW5kXSA9IGNhbGxlZS0+cmFuZ2UoKTsKKyAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAi
ZnVuY3Rpb24gc3RhcnQ6ICIsIFJhd1BvaW50ZXIoc3RhcnQpLCAiIGVuZDogIiwgUmF3UG9pbnRl
cihlbmQpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0IDw9IGZhdWx0aW5nSW5zdHJ1
Y3Rpb24gJiYgZmF1bHRpbmdJbnN0cnVjdGlvbiA8IGVuZCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3Nl
LCAiZm91bmQgbWF0Y2giKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGlmIChkb2VzRmF1
bHRJbldhc20oZmF1bHRpbmdJbnN0cnVjdGlvbikpIHsKKyAgICAgICAgICAgICAgICBNYWNoaW5l
Q29udGV4dDo6YXJndW1lbnRQb2ludGVyPDE+KGNvbnRleHQpID0gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihXYXNtOjpDb250ZXh0Ojp1c2VGYXN0VExTKCkp
KTsKKyAgICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6c2V0SW5zdHJ1Y3Rpb25Qb2ludGVy
KGNvbnRleHQsIExMSW50OjpnZXRDb2RlUHRyPENGdW5jdGlvblB0clRhZz4od2FzbV90aHJvd19m
cm9tX2ZhdWx0X2hhbmRsZXJfdHJhbXBvbGluZSkpOworICAgICAgICAgICAgICAgIHJldHVybiBT
aWduYWxBY3Rpb246OkhhbmRsZWQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBA
IC0xMDcsNyArMTE4LDcgQEAgdm9pZCBlbmFibGVGYXN0TWVtb3J5KCkKICAgICAgICAgaWYgKCFX
YXNtOjppc1N1cHBvcnRlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICgh
T3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCkpCisgICAgICAgIGlmICghT3B0aW9u
czo6dXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCkgJiYgIU9wdGlvbnM6OnVzZVNoYXJlZEFycmF5
QnVmZmVyKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYWN0aXZhdGVTaWduYWxI
YW5kbGVyc0ZvcihTaWduYWw6OkFjY2Vzc0ZhdWx0KTsKQEAgLTEyNSw3ICsxMzYsNyBAQCB2b2lk
IHByZXBhcmVGYXN0TWVtb3J5KCkKICAgICAgICAgaWYgKCFXYXNtOjppc1N1cHBvcnRlZCgpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICghT3B0aW9uczo6dXNlV2ViQXNzZW1i
bHlGYXN0TWVtb3J5KCkpCisgICAgICAgIGlmICghT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0
TWVtb3J5KCkgJiYgIU9wdGlvbnM6OnVzZVNoYXJlZEFycmF5QnVmZmVyKCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgYWRkU2lnbmFsSGFuZGxlcihTaWduYWw6OkFjY2Vzc0ZhdWx0
LCBbXSAoU2lnbmFsIHNpZ25hbCwgU2lnSW5mbyYgc2lnSW5mbywgUGxhdGZvcm1SZWdpc3RlcnMm
IHVjb250ZXh0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
SW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCmlu
ZGV4IDYwZTU2MTkwMmQ0YzE4ZjgxZWUyZjM3Y2M1YmU3ZDY1NDY2N2RlZWYuLjlhOTg1MmMyNDIy
MDgyN2I3ZWEwZWU3NGRlZmE0MzQ1Yzg4MTBlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21JbnN0YW5jZS5oCkBAIC03Nyw4ICs3Nyw4IEBAIGNsYXNzIEluc3RhbmNlIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRy
PEluCiAgICAgVGFibGUqIHRhYmxlKHVuc2lnbmVkKTsKICAgICB2b2lkIHNldFRhYmxlKHVuc2ln
bmVkLCBSZWY8VGFibGU+JiYpOwogCi0gICAgdm9pZCogY2FjaGVkTWVtb3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWNoZWRNZW1vcnkuZ2V0TWF5QmVOdWxsKGNhY2hlZE1lbW9yeVNpemUoKSk7IH0K
LSAgICBzaXplX3QgY2FjaGVkTWVtb3J5U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkTWVt
b3J5U2l6ZTsgfQorICAgIHZvaWQqIGNhY2hlZE1lbW9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fj
aGVkTWVtb3J5LmdldE1heUJlTnVsbChjYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSk7IH0KKyAg
ICBzaXplX3QgY2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jYWNo
ZWRCb3VuZHNDaGVja2luZ1NpemU7IH0KIAogICAgIHZvaWQgc2V0TWVtb3J5KFJlZjxNZW1vcnk+
JiYgbWVtb3J5KQogICAgIHsKQEAgLTg5LDggKzg5LDggQEAgY2xhc3MgSW5zdGFuY2UgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW5zdGFuY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
SW4KICAgICB2b2lkIHVwZGF0ZUNhY2hlZE1lbW9yeSgpCiAgICAgewogICAgICAgICBpZiAobV9t
ZW1vcnkgIT0gbnVsbHB0cikgewotICAgICAgICAgICAgbV9jYWNoZWRNZW1vcnkgPSBDYWdlZFB0
cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj4obWVtb3J5KCktPm1lbW9y
eSgpLCBtZW1vcnkoKS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG1fY2FjaGVkTWVtb3J5U2l6ZSA9
IG1lbW9yeSgpLT5zaXplKCk7CisgICAgICAgICAgICBtX2NhY2hlZE1lbW9yeSA9IENhZ2VkUHRy
PEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPihtZW1vcnkoKS0+bWVtb3J5
KCksIG1lbW9yeSgpLT5ib3VuZHNDaGVja2luZ1NpemUoKSk7CisgICAgICAgICAgICBtX2NhY2hl
ZEJvdW5kc0NoZWNraW5nU2l6ZSA9IG1lbW9yeSgpLT5ib3VuZHNDaGVja2luZ1NpemUoKTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtMTQ2LDcgKzE0Niw3IEBAIGNsYXNzIEluc3RhbmNlIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRy
PEluCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk1lbW9yeSgpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihJbnN0YW5jZSwgbV9tZW1vcnkpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZkdsb2JhbHMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fZ2xv
YmFscyk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FjaGVkTWVtb3J5KCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX2NhY2hlZE1lbW9yeSk7IH0KLSAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihJbnN0YW5jZSwgbV9jYWNoZWRNZW1vcnlTaXplKTsgfQorICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fY2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKTsgfQogICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZQb2ludGVyVG9Ub3BFbnRyeUZyYW1lKCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX3BvaW50ZXJUb1RvcEVudHJ5RnJhbWUpOyB9
CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUG9pbnRlclRvQWN0dWFsU3RhY2tMaW1p
dCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5jZSwgbV9wb2ludGVyVG9BY3R1YWxT
dGFja0xpbWl0KTsgfQpAQCAtMjAxLDcgKzIwMSw3IEBAIGNsYXNzIEluc3RhbmNlIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPElu
CiAgICAgdm9pZCogbV9vd25lciB7IG51bGxwdHIgfTsgLy8gSW4gYSBKUyBlbWJlZGRpbmcsIHRo
aXMgaXMgYSBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqLgogICAgIENvbnRleHQqIG1fY29udGV4dCB7
IG51bGxwdHIgfTsKICAgICBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdD
YWdlZFB0cj4gbV9jYWNoZWRNZW1vcnk7Ci0gICAgc2l6ZV90IG1fY2FjaGVkTWVtb3J5U2l6ZSB7
IDAgfTsKKyAgICBzaXplX3QgbV9jYWNoZWRCb3VuZHNDaGVja2luZ1NpemUgeyAwIH07CiAgICAg
UmVmPE1vZHVsZT4gbV9tb2R1bGU7CiAgICAgUmVmUHRyPENvZGVCbG9jaz4gbV9jb2RlQmxvY2s7
CiAgICAgUmVmUHRyPE1lbW9yeT4gbV9tZW1vcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21NZW1vcnkuY3BwCmluZGV4IGEyNmU4MWQ3MTI0ZjMwYWUxM2Q4MmI3NGNiMWQ0MzA2YTM0
ZTI1YjIuLjU4ZDJiNjZkMmM3MjMzZGE2Nzc4MWE5ZjRiMDgxYmE1NTg2MmZjMWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAj
aW5jbHVkZSA8d3RmL1JBTVNpemUuaD4KKyNpbmNsdWRlIDx3dGYvU3RkU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiAjaW5jbHVkZSA8Y3N0cmluZz4KQEAgLTEzMywxNiArMTM0LDU1
IEBAIGNsYXNzIE1lbW9yeU1hbmFnZXIgewogICAgICAgICAKICAgICAgICAgZGF0YUxvZ0xuSWYo
T3B0aW9uczo6bG9nV2ViQXNzZW1ibHlNZW1vcnkoKSwgIkZyZWVkIHZpcnR1YWw7IHN0YXRlOiAi
LCAqdGhpcyk7CiAgICAgfQotICAgIAotICAgIGJvb2wgaXNBZGRyZXNzSW5GYXN0TWVtb3J5KHZv
aWQqIGFkZHJlc3MpCisKKyAgICBNZW1vcnlSZXN1bHQgdHJ5QWxsb2NhdGVHcm93YWJsZUJvdW5k
c0NoZWNraW5nTWVtb3J5KHNpemVfdCBtYXBwZWRDYXBhY2l0eSkKKyAgICB7CisgICAgICAgIE1l
bW9yeVJlc3VsdCByZXN1bHQgPSBbJl0geworICAgICAgICAgICAgYXV0byBob2xkZXIgPSBob2xk
TG9jayhtX2xvY2spOworICAgICAgICAgICAgdm9pZCogcmVzdWx0ID0gR2lnYWNhZ2U6OnRyeUFs
bG9jYXRlWmVyb2VkVmlydHVhbFBhZ2VzKEdpZ2FjYWdlOjpQcmltaXRpdmUsIG1hcHBlZENhcGFj
aXR5KTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiBN
ZW1vcnlSZXN1bHQobnVsbHB0ciwgTWVtb3J5UmVzdWx0OjpTeW5jVHJ5VG9SZWNsYWltTWVtb3J5
KTsKKworICAgICAgICAgICAgbV9ncm93YWJsZUJvdW5kc0NoZWNraW5nTWVtb3JpZXMuaW5zZXJ0
KHN0ZDo6bWFrZV9wYWlyKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHJlc3VsdCksIG1hcHBlZENh
cGFjaXR5KSk7CisKKyAgICAgICAgICAgIHJldHVybiBNZW1vcnlSZXN1bHQocmVzdWx0LCBNZW1v
cnlSZXN1bHQ6OlN1Y2Nlc3MpOworICAgICAgICB9KCk7CisKKyAgICAgICAgZGF0YUxvZ0xuSWYo
T3B0aW9uczo6bG9nV2ViQXNzZW1ibHlNZW1vcnkoKSwgIkFsbG9jYXRlZCB2aXJ0dWFsOiAiLCBy
ZXN1bHQsICI7IHN0YXRlOiAiLCAqdGhpcyk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisKKyAgICB2b2lkIGZyZWVHcm93YWJsZUJvdW5kc0NoZWNraW5nTWVtb3J5KHZvaWQqIGJh
c2VQdHIsIHNpemVfdCBtYXBwZWRDYXBhY2l0eSkKKyAgICB7CisgICAgICAgIHsKKyAgICAgICAg
ICAgIGF1dG8gaG9sZGVyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgICAgIEdpZ2FjYWdl
OjpmcmVlVmlydHVhbFBhZ2VzKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VQdHIsIG1hcHBlZENh
cGFjaXR5KTsKKyAgICAgICAgICAgIG1fZ3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9yaWVzLmVy
YXNlKHN0ZDo6bWFrZV9wYWlyKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGJhc2VQdHIpLCBtYXBw
ZWRDYXBhY2l0eSkpOworICAgICAgICB9CisKKyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6
bG9nV2ViQXNzZW1ibHlNZW1vcnkoKSwgIkZyZWVkIHZpcnR1YWw7IHN0YXRlOiAiLCAqdGhpcyk7
CisgICAgfQorCisgICAgYm9vbCBpc0FkZHJlc3NJbkdyb3dhYmxlTWVtb3J5KHZvaWQqIGFkZHJl
c3MpCiAgICAgewotICAgICAgICAvLyBOT1RFOiBUaGlzIGNhbiBiZSBjYWxsZWQgZnJvbSBhIHNp
Z25hbCBoYW5kbGVyLCBidXQgb25seSBhZnRlciB3ZSBwcm92ZWQgdGhhdCB3ZSdyZSBpbiBKSVQg
Y29kZS4KKyAgICAgICAgLy8gTk9URTogVGhpcyBjYW4gYmUgY2FsbGVkIGZyb20gYSBzaWduYWwg
aGFuZGxlciwgYnV0IG9ubHkgYWZ0ZXIgd2UgcHJvdmVkIHRoYXQgd2UncmUgaW4gSklUIGNvZGUg
b3IgV2FzbUxMSW50IGNvZGUuCiAgICAgICAgIGF1dG8gaG9sZGVyID0gaG9sZExvY2sobV9sb2Nr
KTsKICAgICAgICAgZm9yICh2b2lkKiBtZW1vcnkgOiBtX2Zhc3RNZW1vcmllcykgewogICAgICAg
ICAgICAgY2hhciogc3RhcnQgPSBzdGF0aWNfY2FzdDxjaGFyKj4obWVtb3J5KTsKICAgICAgICAg
ICAgIGlmIChzdGFydCA8PSBhZGRyZXNzICYmIGFkZHJlc3MgPD0gc3RhcnQgKyBNZW1vcnk6OmZh
c3RNYXBwZWRCeXRlcygpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CisgICAgICAgIHVpbnRwdHJfdCBhZGRyZXNzVmFsdWUgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PihhZGRyZXNzKTsKKyAgICAgICAgYXV0byBpdGVyYXRvciA9IHN0ZDo6dXBwZXJfYm91bmQobV9n
cm93YWJsZUJvdW5kc0NoZWNraW5nTWVtb3JpZXMuYmVnaW4oKSwgbV9ncm93YWJsZUJvdW5kc0No
ZWNraW5nTWVtb3JpZXMuZW5kKCksIHN0ZDo6bWFrZV9wYWlyKGFkZHJlc3NWYWx1ZSwgMCksCisg
ICAgICAgICAgICBbXShzdGQ6OnBhaXI8dWludHB0cl90LCBzaXplX3Q+IGEsIHN0ZDo6cGFpcjx1
aW50cHRyX3QsIHNpemVfdD4gYikgeworICAgICAgICAgICAgICAgIHJldHVybiAoYS5maXJzdCAr
IGEuc2Vjb25kKSA8IChiLmZpcnN0ICsgYi5zZWNvbmQpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIGlmIChpdGVyYXRvciAhPSBtX2dyb3dhYmxlQm91bmRzQ2hlY2tpbmdNZW1vcmllcy5lbmQo
KSkgeworICAgICAgICAgICAgLy8gU2luY2Ugd2UgbmV2ZXIgaGF2ZSBvdmVybGFwcGVkIHJhbmdl
IGluIG1fZ3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9yaWVzLCBqdXN0IGNoZWNraW5nIG9uZSBs
b3dlci1ib3VuZCByYW5nZSBpcyBlbm91Z2guCisgICAgICAgICAgICBpZiAoaXRlcmF0b3ItPmZp
cnN0IDw9IGFkZHJlc3NWYWx1ZSAmJiBhZGRyZXNzVmFsdWUgPCAoaXRlcmF0b3ItPmZpcnN0ICsg
aXRlcmF0b3ItPnNlY29uZCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTkyLDYgKzIzMiw3IEBAIGNs
YXNzIE1lbW9yeU1hbmFnZXIgewogICAgIExvY2sgbV9sb2NrOwogICAgIHVuc2lnbmVkIG1fbWF4
RmFzdE1lbW9yeUNvdW50IHsgMCB9OwogICAgIFZlY3Rvcjx2b2lkKj4gbV9mYXN0TWVtb3JpZXM7
CisgICAgU3RkU2V0PHN0ZDo6cGFpcjx1aW50cHRyX3QsIHNpemVfdD4+IG1fZ3Jvd2FibGVCb3Vu
ZHNDaGVja2luZ01lbW9yaWVzOwogICAgIHNpemVfdCBtX3BoeXNpY2FsQnl0ZXMgeyAwIH07CiB9
OwogCkBAIC0yMzUsMzAgKzI3Niw2OSBAQCBib29sIHRyeUFsbG9jYXRlKGNvbnN0IEZ1bmMmIGFs
bG9jYXRlLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoTWVtb3J5OjpOb3RpZnlQcgogCiB9IC8v
IGFub255bW91cyBuYW1lc3BhY2UKIAorCitNZW1vcnlIYW5kbGU6Ok1lbW9yeUhhbmRsZSh2b2lk
KiBtZW1vcnksIHNpemVfdCBzaXplLCBzaXplX3QgbWFwcGVkQ2FwYWNpdHksIFBhZ2VDb3VudCBp
bml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgTWVtb3J5U2hhcmluZ01vZGUgc2hhcmluZ01vZGUs
IE1lbW9yeU1vZGUgbW9kZSkKKyAgICA6IG1fbWVtb3J5KG1lbW9yeSwgbWFwcGVkQ2FwYWNpdHkp
CisgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAsIG1fbWFwcGVkQ2FwYWNpdHkobWFwcGVkQ2FwYWNp
dHkpCisgICAgLCBtX2luaXRpYWwoaW5pdGlhbCkKKyAgICAsIG1fbWF4aW11bShtYXhpbXVtKQor
ICAgICwgbV9zaGFyaW5nTW9kZShzaGFyaW5nTW9kZSkKKyAgICAsIG1fbW9kZShtb2RlKQorewor
fQorCitNZW1vcnlIYW5kbGU6On5NZW1vcnlIYW5kbGUoKQoreworICAgIGlmIChtX21lbW9yeSkg
eworICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZVBoeXNpY2FsQnl0ZXMobV9zaXplKTsKKyAg
ICAgICAgc3dpdGNoIChtX21vZGUpIHsKKyAgICAgICAgY2FzZSBNZW1vcnlNb2RlOjpTaWduYWxp
bmc6CisgICAgICAgICAgICBpZiAobXByb3RlY3QobWVtb3J5KCksIE1lbW9yeTo6ZmFzdE1hcHBl
ZEJ5dGVzKCksIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpKSB7CisgICAgICAgICAgICAgICAgZGF0
YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZUZhc3RNZW1vcnkobWVtb3J5KCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmc6
IHsKKyAgICAgICAgICAgIHN3aXRjaCAobV9zaGFyaW5nTW9kZSkgeworICAgICAgICAgICAgY2Fz
ZSBNZW1vcnlTaGFyaW5nTW9kZTo6RGVmYXVsdDoKKyAgICAgICAgICAgICAgICBHaWdhY2FnZTo6
ZnJlZVZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBtZW1vcnkoKSwgbV9zaXplKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTWVtb3J5U2hhcmluZ01v
ZGU6OlNoYXJlZDogeworICAgICAgICAgICAgICAgIGlmIChtcHJvdGVjdChtZW1vcnkoKSwgbV9t
YXBwZWRDYXBhY2l0eSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIp
OworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZUdyb3dh
YmxlQm91bmRzQ2hlY2tpbmdNZW1vcnkobWVtb3J5KCksIG1fbWFwcGVkQ2FwYWNpdHkpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwogTWVtb3J5OjpN
ZW1vcnkoKQorICAgIDogbV9oYW5kbGUoYWRvcHRSZWYoKm5ldyBNZW1vcnlIYW5kbGUobnVsbHB0
ciwgMCwgMCwgUGFnZUNvdW50KDApLCBQYWdlQ291bnQoMCksIE1lbW9yeVNoYXJpbmdNb2RlOjpE
ZWZhdWx0LCBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpKQogewogfQogCi1NZW1vcnk6Ok1l
bW9yeShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIEZ1bmN0aW9uPHZvaWQo
Tm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBGdW5jdGlvbjx2b2lkKFN5
bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdURjo6RnVuY3Rpb248
dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNjZXNzQ2Fs
bGJhY2spCi0gICAgOiBtX2luaXRpYWwoaW5pdGlhbCkKLSAgICAsIG1fbWF4aW11bShtYXhpbXVt
KQorTWVtb3J5OjpNZW1vcnkoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBN
ZW1vcnlTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSwgRnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3Vy
ZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIEZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFp
bSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNj
ZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykKKyAgICA6
IG1faGFuZGxlKGFkb3B0UmVmKCpuZXcgTWVtb3J5SGFuZGxlKG51bGxwdHIsIDAsIDAsIGluaXRp
YWwsIG1heGltdW0sIHNoYXJpbmdNb2RlLCBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpKQog
ICAgICwgbV9ub3RpZnlNZW1vcnlQcmVzc3VyZShXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJl
KSkKICAgICAsIG1fc3luY1RyeVRvUmVjbGFpbU1lbW9yeShXVEZNb3ZlKHN5bmNUcnlUb1JlY2xh
aW1NZW1vcnkpKQogICAgICwgbV9ncm93U3VjY2Vzc0NhbGxiYWNrKFdURk1vdmUoZ3Jvd1N1Y2Nl
c3NDYWxsYmFjaykpCiB7CiAgICAgQVNTRVJUKCFpbml0aWFsLmJ5dGVzKCkpOwotICAgIEFTU0VS
VChtX21vZGUgPT0gTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpOworICAgIEFTU0VSVChtb2Rl
KCkgPT0gTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpOwogICAgIGRhdGFMb2dMbklmKHZlcmJv
c2UsICJNZW1vcnk6Ok1lbW9yeSBhbGxvY2F0aW5nICIsICp0aGlzKTsKICAgICBBU1NFUlQoIW1l
bW9yeSgpKTsKIH0KIAotTWVtb3J5OjpNZW1vcnkodm9pZCogbWVtb3J5LCBQYWdlQ291bnQgaW5p
dGlhbCwgUGFnZUNvdW50IG1heGltdW0sIHNpemVfdCBtYXBwZWRDYXBhY2l0eSwgTWVtb3J5TW9k
ZSBtb2RlLCBGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVz
c3VyZSwgRnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWlt
TWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNv
dW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKQotICAgIDogbV9tZW1vcnkobWVtb3J5LCBpbml0
aWFsLmJ5dGVzKCkpCi0gICAgLCBtX3NpemUoaW5pdGlhbC5ieXRlcygpKQotICAgICwgbV9pbml0
aWFsKGluaXRpYWwpCi0gICAgLCBtX21heGltdW0obWF4aW11bSkKLSAgICAsIG1fbWFwcGVkQ2Fw
YWNpdHkobWFwcGVkQ2FwYWNpdHkpCi0gICAgLCBtX21vZGUobW9kZSkKK01lbW9yeTo6TWVtb3J5
KFJlZjxNZW1vcnlIYW5kbGU+JiYgaGFuZGxlLCBGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJl
KT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgRnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWlt
KT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nl
c3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKQorICAgIDog
bV9oYW5kbGUoV1RGTW92ZShoYW5kbGUpKQogICAgICwgbV9ub3RpZnlNZW1vcnlQcmVzc3VyZShX
VEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJlKSkKICAgICAsIG1fc3luY1RyeVRvUmVjbGFpbU1l
bW9yeShXVEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpKQogICAgICwgbV9ncm93U3VjY2Vz
c0NhbGxiYWNrKFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykpCkBAIC0yNzEsNyArMzUxLDEy
IEBAIFJlZjxNZW1vcnk+IE1lbW9yeTo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBNZW1vcnkoKSk7CiB9CiAKLVJlZlB0cjxNZW1vcnk+IE1lbW9yeTo6dHJ5Q3JlYXRlKFBhZ2VD
b3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgV1RGOjpGdW5jdGlvbjx2b2lkKE5vdGlm
eVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFN5
bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdURjo6RnVuY3Rpb248
dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNjZXNzQ2Fs
bGJhY2spCitSZWY8TWVtb3J5PiBNZW1vcnk6OmNyZWF0ZShSZWY8TWVtb3J5SGFuZGxlPiYmIGhh
bmRsZSwgV1RGOjpGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQ
cmVzc3VyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlU
b1JlY2xhaW1NZW1vcnksIFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50
LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNjZXNzQ2FsbGJhY2spCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTWVtb3J5KFdURk1vdmUoaGFuZGxlKSwgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVz
c3VyZSksIFdURk1vdmUoc3luY1RyeVRvUmVjbGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nl
c3NDYWxsYmFjaykpKTsKK30KKworUmVmUHRyPE1lbW9yeT4gTWVtb3J5Ojp0cnlDcmVhdGUoUGFn
ZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBNZW1vcnlTaGFyaW5nTW9kZSBzaGFy
aW5nTW9kZSwgV1RGOjpGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1v
cnlQcmVzc3VyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNU
cnlUb1JlY2xhaW1NZW1vcnksIFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNv
dW50LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNjZXNzQ2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGlu
aXRpYWwpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFtYXhpbXVtIHx8IG1heGltdW0gPj0gaW5pdGlh
bCk7IC8vIFRoaXMgc2hvdWxkIGJlIGd1YXJhbnRlZWQgYnkgb3VyIGNhbGxlci4KQEAgLTI4NSw3
ICszNzAsNyBAQCBSZWZQdHI8TWVtb3J5PiBNZW1vcnk6OnRyeUNyZWF0ZShQYWdlQ291bnQgaW5p
dGlhbCwgUGFnZUNvdW50IG1heGltdW0sIFdURjo6RnVuYwogICAgIGlmIChtYXhpbXVtICYmICFt
YXhpbXVtQnl0ZXMpIHsKICAgICAgICAgLy8gVXNlciBzcGVjaWZpZWQgYSB6ZXJvIG1heGltdW0s
IGluaXRpYWwgc2l6ZSBtdXN0IGFsc28gYmUgemVyby4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IWluaXRpYWxCeXRlcyk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVtb3J5KGluaXRp
YWwsIG1heGltdW0sIFdURk1vdmUobm90aWZ5TWVtb3J5UHJlc3N1cmUpLCBXVEZNb3ZlKHN5bmNU
cnlUb1JlY2xhaW1NZW1vcnkpLCBXVEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJhY2spKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVtb3J5KGluaXRpYWwsIG1heGltdW0sIHNoYXJpbmdN
b2RlLCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJlKSwgV1RGTW92ZShzeW5jVHJ5VG9SZWNs
YWltTWVtb3J5KSwgV1RGTW92ZShncm93U3VjY2Vzc0NhbGxiYWNrKSkpOwogICAgIH0KICAgICAK
ICAgICBib29sIGRvbmUgPSB0cnlBbGxvY2F0ZSgKQEAgLTMwNiw0OCArMzkxLDU2IEBAIFJlZlB0
cjxNZW1vcnk+IE1lbW9yeTo6dHJ5Q3JlYXRlKFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQg
bWF4aW11bSwgV1RGOjpGdW5jCiAgICAgfQogICAgIAogICAgIGlmIChmYXN0TWVtb3J5KSB7Ci0g
ICAgICAgIAogICAgICAgICBpZiAobXByb3RlY3QoZmFzdE1lbW9yeSArIGluaXRpYWxCeXRlcywg
TWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSAtIGluaXRpYWxCeXRlcywgUFJPVF9OT05FKSkgewog
ICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyks
ICJcbiIpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVtb3J5KGZhc3RNZW1vcnksIGlu
aXRpYWwsIG1heGltdW0sIE1lbW9yeTo6ZmFzdE1hcHBlZEJ5dGVzKCksIE1lbW9yeU1vZGU6OlNp
Z25hbGluZywgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1vdmUoc3luY1RyeVRv
UmVjbGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykpKTsKKyAgICAgICAg
cmV0dXJuIE1lbW9yeTo6Y3JlYXRlKGFkb3B0UmVmKCpuZXcgTWVtb3J5SGFuZGxlKGZhc3RNZW1v
cnksIGluaXRpYWxCeXRlcywgTWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSwgaW5pdGlhbCwgbWF4
aW11bSwgc2hhcmluZ01vZGUsIE1lbW9yeU1vZGU6OlNpZ25hbGluZykpLCBXVEZNb3ZlKG5vdGlm
eU1lbW9yeVByZXNzdXJlKSwgV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92
ZShncm93U3VjY2Vzc0NhbGxiYWNrKSk7CiAgICAgfQogICAgIAogICAgIGlmIChVTkxJS0VMWShP
cHRpb25zOjpjcmFzaElmV2ViQXNzZW1ibHlDYW50RmFzdE1lbW9yeSgpKSkKICAgICAgICAgd2Vi
QXNzZW1ibHlDb3VsZG50R2V0RmFzdE1lbW9yeSgpOwogCiAgICAgaWYgKCFpbml0aWFsQnl0ZXMp
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVtb3J5KGluaXRpYWwsIG1heGltdW0sIFdU
Rk1vdmUobm90aWZ5TWVtb3J5UHJlc3N1cmUpLCBXVEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1v
cnkpLCBXVEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJhY2spKSk7Ci0gICAgCi0gICAgdm9pZCogc2xv
d01lbW9yeSA9IEdpZ2FjYWdlOjp0cnlBbGxvY2F0ZVplcm9lZFZpcnR1YWxQYWdlcyhHaWdhY2Fn
ZTo6UHJpbWl0aXZlLCBpbml0aWFsQnl0ZXMpOwotICAgIGlmICghc2xvd01lbW9yeSkgewotICAg
ICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZVBoeXNpY2FsQnl0ZXMoaW5pdGlhbEJ5dGVzKTsKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVtb3J5
KGluaXRpYWwsIG1heGltdW0sIHNoYXJpbmdNb2RlLCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNz
dXJlKSwgV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92ZShncm93U3VjY2Vz
c0NhbGxiYWNrKSkpOworCisgICAgc3dpdGNoIChzaGFyaW5nTW9kZSkgeworICAgIGNhc2UgTWVt
b3J5U2hhcmluZ01vZGU6OkRlZmF1bHQ6IHsKKyAgICAgICAgdm9pZCogc2xvd01lbW9yeSA9IEdp
Z2FjYWdlOjp0cnlBbGxvY2F0ZVplcm9lZFZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6UHJpbWl0aXZl
LCBpbml0aWFsQnl0ZXMpOworICAgICAgICBpZiAoIXNsb3dNZW1vcnkpIHsKKyAgICAgICAgICAg
IG1lbW9yeU1hbmFnZXIoKS5mcmVlUGh5c2ljYWxCeXRlcyhpbml0aWFsQnl0ZXMpOworICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE1lbW9yeTo6
Y3JlYXRlKGFkb3B0UmVmKCpuZXcgTWVtb3J5SGFuZGxlKHNsb3dNZW1vcnksIGluaXRpYWxCeXRl
cywgaW5pdGlhbEJ5dGVzLCBpbml0aWFsLCBtYXhpbXVtLCBzaGFyaW5nTW9kZSwgTWVtb3J5TW9k
ZTo6Qm91bmRzQ2hlY2tpbmcpKSwgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1v
dmUoc3luY1RyeVRvUmVjbGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykp
OwogICAgIH0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lbW9yeShzbG93TWVtb3J5LCBpbml0
aWFsLCBtYXhpbXVtLCBpbml0aWFsQnl0ZXMsIE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nLCBX
VEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJlKSwgV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVt
b3J5KSwgV1RGTW92ZShncm93U3VjY2Vzc0NhbGxiYWNrKSkpOwotfQorICAgIGNhc2UgTWVtb3J5
U2hhcmluZ01vZGU6OlNoYXJlZDogeworICAgICAgICBjaGFyKiBzbG93TWVtb3J5ID0gbnVsbHB0
cjsKKyAgICAgICAgdHJ5QWxsb2NhdGUoCisgICAgICAgICAgICBbJl0gKCkgLT4gTWVtb3J5UmVz
dWx0OjpLaW5kIHsKKyAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1lbW9yeU1hbmFnZXIo
KS50cnlBbGxvY2F0ZUdyb3dhYmxlQm91bmRzQ2hlY2tpbmdNZW1vcnkobWF4aW11bUJ5dGVzKTsK
KyAgICAgICAgICAgICAgICBzbG93TWVtb3J5ID0gYml0d2lzZV9jYXN0PGNoYXIqPihyZXN1bHQu
YmFzZVB0cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5raW5kOworICAgICAgICAg
ICAgfSwgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpOworICAg
ICAgICBpZiAoIXNsb3dNZW1vcnkpIHsKKyAgICAgICAgICAgIG1lbW9yeU1hbmFnZXIoKS5mcmVl
UGh5c2ljYWxCeXRlcyhpbml0aWFsQnl0ZXMpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIH0KIAotTWVtb3J5Ojp+TWVtb3J5KCkKLXsKLSAgICBpZiAobV9tZW1vcnkpIHsK
LSAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVQaHlzaWNhbEJ5dGVzKG1fc2l6ZSk7Ci0gICAg
ICAgIHN3aXRjaCAobV9tb2RlKSB7Ci0gICAgICAgIGNhc2UgTWVtb3J5TW9kZTo6U2lnbmFsaW5n
OgotICAgICAgICAgICAgaWYgKG1wcm90ZWN0KG1lbW9yeSgpLCBNZW1vcnk6OmZhc3RNYXBwZWRC
eXRlcygpLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKSkgewotICAgICAgICAgICAgICAgIGRhdGFM
b2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKLSAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVGYXN0TWVtb3J5KG1lbW9yeSgpKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nOgot
ICAgICAgICAgICAgR2lnYWNhZ2U6OmZyZWVWaXJ0dWFsUGFnZXMoR2lnYWNhZ2U6OlByaW1pdGl2
ZSwgbWVtb3J5KCksIG1fc2l6ZSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKG1w
cm90ZWN0KHNsb3dNZW1vcnkgKyBpbml0aWFsQnl0ZXMsIG1heGltdW1CeXRlcyAtIGluaXRpYWxC
eXRlcywgUFJPVF9OT05FKSkgeworICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVk
OiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQorCisgICAgICAgIHJldHVybiBNZW1vcnk6OmNyZWF0
ZShhZG9wdFJlZigqbmV3IE1lbW9yeUhhbmRsZShzbG93TWVtb3J5LCBpbml0aWFsQnl0ZXMsIG1h
eGltdW1CeXRlcywgaW5pdGlhbCwgbWF4aW11bSwgc2hhcmluZ01vZGUsIE1lbW9yeU1vZGU6OkJv
dW5kc0NoZWNraW5nKSksIFdURk1vdmUobm90aWZ5TWVtb3J5UHJlc3N1cmUpLCBXVEZNb3ZlKHN5
bmNUcnlUb1JlY2xhaW1NZW1vcnkpLCBXVEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJhY2spKTsKICAg
ICB9CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKK01lbW9yeTo6fk1lbW9yeSgpID0gZGVmYXVsdDsKKwogc2l6ZV90IE1l
bW9yeTo6ZmFzdE1hcHBlZFJlZHpvbmVCeXRlcygpCiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PHNpemVfdD4oUGFnZUNvdW50OjpwYWdlU2l6ZSkgKiBPcHRpb25zOjp3ZWJBc3NlbWJseUZhc3RN
ZW1vcnlSZWR6b25lUGFnZXMoKTsKQEAgLTM1OSwxOCArNDUyLDc3IEBAIHNpemVfdCBNZW1vcnk6
OmZhc3RNYXBwZWRCeXRlcygpCiAgICAgcmV0dXJuIChzdGF0aWNfY2FzdDxzaXplX3Q+KDEpIDw8
IDMyKSArIGZhc3RNYXBwZWRSZWR6b25lQnl0ZXMoKTsKIH0KIAotYm9vbCBNZW1vcnk6OmFkZHJl
c3NJc0luQWN0aXZlRmFzdE1lbW9yeSh2b2lkKiBhZGRyZXNzKQorYm9vbCBNZW1vcnk6OmFkZHJl
c3NJc0luQWN0aXZlR3Jvd2FibGVNZW1vcnkodm9pZCogYWRkcmVzcykKIHsKLSAgICByZXR1cm4g
bWVtb3J5TWFuYWdlcigpLmlzQWRkcmVzc0luRmFzdE1lbW9yeShhZGRyZXNzKTsKKyAgICByZXR1
cm4gbWVtb3J5TWFuYWdlcigpLmlzQWRkcmVzc0luR3Jvd2FibGVNZW1vcnkoYWRkcmVzcyk7CiB9
CiAKLUV4cGVjdGVkPFBhZ2VDb3VudCwgTWVtb3J5OjpHcm93RmFpbFJlYXNvbj4gTWVtb3J5Ojpn
cm93KFBhZ2VDb3VudCBkZWx0YSkKK0V4cGVjdGVkPFBhZ2VDb3VudCwgTWVtb3J5OjpHcm93RmFp
bFJlYXNvbj4gTWVtb3J5Ojpncm93U2hhcmVkKFBhZ2VDb3VudCBkZWx0YSkKIHsKLSAgICBjb25z
dCBXYXNtOjpQYWdlQ291bnQgb2xkUGFnZUNvdW50ID0gc2l6ZUluUGFnZXMoKTsKKyAgICBXYXNt
OjpQYWdlQ291bnQgb2xkUGFnZUNvdW50OworICAgIFdhc206OlBhZ2VDb3VudCBuZXdQYWdlQ291
bnQ7CisgICAgYXV0byByZXN1bHQgPSAoWyZdKCkgLT4gRXhwZWN0ZWQ8UGFnZUNvdW50LCBNZW1v
cnk6Okdyb3dGYWlsUmVhc29uPiB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9o
YW5kbGUtPmxvY2soKSk7CisKKyAgICAgICAgb2xkUGFnZUNvdW50ID0gc2l6ZUluUGFnZXMoKTsK
KyAgICAgICAgbmV3UGFnZUNvdW50ID0gb2xkUGFnZUNvdW50ICsgZGVsdGE7CisgICAgICAgIGlm
ICghbmV3UGFnZUNvdW50IHx8ICFuZXdQYWdlQ291bnQuaXNWYWxpZCgpKQorICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpJbnZhbGlkR3Jvd1NpemUpOwor
ICAgICAgICBpZiAobmV3UGFnZUNvdW50LmJ5dGVzKCkgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUp
CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoR3Jvd0ZhaWxSZWFzb246Ok91dE9m
TWVtb3J5KTsKKworICAgICAgICBpZiAoZGVsdGEucGFnZUNvdW50KCkgPT0gMCkKKyAgICAgICAg
ICAgIHJldHVybiBvbGRQYWdlQ291bnQ7CisKKyAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwg
Ik1lbW9yeTo6Z3JvdygiLCBkZWx0YSwgIikgdG8gIiwgbmV3UGFnZUNvdW50LCAiIGZyb20gIiwg
KnRoaXMpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChuZXdQYWdlQ291bnQgPiBQYWdlQ291bnQ6
OmZyb21CeXRlcyhzaXplKCkpKTsKKworICAgICAgICBpZiAobWF4aW11bSgpICYmIG5ld1BhZ2VD
b3VudCA+IG1heGltdW0oKSkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChHcm93
RmFpbFJlYXNvbjo6V291bGRFeGNlZWRNYXhpbXVtKTsKKworICAgICAgICBzaXplX3QgZGVzaXJl
ZFNpemUgPSBuZXdQYWdlQ291bnQuYnl0ZXMoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGVz
aXJlZFNpemUgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoZGVzaXJlZFNpemUgPiBzaXplKCkpOworCisgICAgICAgIC8vIElmIHRoZSBtZW1vcnkgaXMg
TWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZCwgd2UgYWxyZWFkeSBhbGxvY2F0ZWQgZW5vdWdoIHZp
cnR1YWwgYWRkcmVzcyBzcGFjZSBldmVuIGlmIHRoZSBtZW1vcnkgaXMgYm91bmQtY2hlY2tpbmcg
bW9kZS4gV2UgcGVyZm9ybSBtcHJvdGVjdCB0byBleHRlbmQuCisgICAgICAgIHNpemVfdCBleHRy
YUJ5dGVzID0gZGVzaXJlZFNpemUgLSBzaXplKCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4
dHJhQnl0ZXMpOworICAgICAgICBib29sIGFsbG9jYXRpb25TdWNjZXNzID0gdHJ5QWxsb2NhdGUo
CisgICAgICAgICAgICBbJl0gKCkgLT4gTWVtb3J5UmVzdWx0OjpLaW5kIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbWVtb3J5TWFuYWdlcigpLnRyeUFsbG9jYXRlUGh5c2ljYWxCeXRlcyhleHRy
YUJ5dGVzKTsKKyAgICAgICAgICAgIH0sIFtdKFdhc206Ok1lbW9yeTo6Tm90aWZ5UHJlc3N1cmUp
IHsgfSwgW10oTWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7IH0pOworICAgICAgICBpZiAoIWFs
bG9jYXRpb25TdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEdyb3dG
YWlsUmVhc29uOjpPdXRPZk1lbW9yeSk7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobWVtb3J5
KCkpOworCisgICAgICAgIC8vIFNpZ25hbGluZyBtZW1vcnkgbXVzdCBoYXZlIGJlZW4gcHJlLWFs
bG9jYXRlZCB2aXJ0dWFsbHkuCisgICAgICAgIHVpbnQ4X3QqIHN0YXJ0QWRkcmVzcyA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3QqPihtZW1vcnkoKSkgKyBzaXplKCk7CiAKKyAgICAgICAgZGF0YUxvZ0xu
SWYodmVyYm9zZSwgIk1hcmtpbmcgV2ViQXNzZW1ibHkgbWVtb3J5J3MgIiwgUmF3UG9pbnRlciht
ZW1vcnkoKSksICIgYXMgcmVhZCt3cml0ZSBpbiByYW5nZSBbIiwgUmF3UG9pbnRlcihzdGFydEFk
ZHJlc3MpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXJ0QWRkcmVzcyArIGV4dHJhQnl0ZXMpLCAiKSIp
OworICAgICAgICBpZiAobXByb3RlY3Qoc3RhcnRBZGRyZXNzLCBleHRyYUJ5dGVzLCBQUk9UX1JF
QUQgfCBQUk9UX1dSSVRFKSkgeworICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVk
OiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNl
KCk7IC8vIEVuc3VyZSBzdG9yaW5nICJzaXplIiBoYXBwZW5zIGFmdGVyIG1wcm90ZWN0IGlzIGRv
bmUuCisgICAgICAgIG1faGFuZGxlLT5ncm93VG9TaXplKGRlc2lyZWRTaXplKTsKKyAgICAgICAg
cmV0dXJuIG9sZFBhZ2VDb3VudDsKKyAgICB9KCkpOworICAgIGlmIChyZXN1bHQpCisgICAgICAg
IG1fZ3Jvd1N1Y2Nlc3NDYWxsYmFjayhHcm93U3VjY2Vzc1RhZywgb2xkUGFnZUNvdW50LCBuZXdQ
YWdlQ291bnQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0V4cGVjdGVkPFBhZ2VDb3VudCwg
TWVtb3J5OjpHcm93RmFpbFJlYXNvbj4gTWVtb3J5Ojpncm93KFBhZ2VDb3VudCBkZWx0YSkKK3sK
ICAgICBpZiAoIWRlbHRhLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KEdyb3dGYWlsUmVhc29uOjpJbnZhbGlkRGVsdGEpOwotICAgIAorCisgICAgaWYgKHNoYXJpbmdN
b2RlKCkgPT0gTWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZCkKKyAgICAgICAgcmV0dXJuIGdyb3dT
aGFyZWQoZGVsdGEpOworCisgICAgY29uc3QgV2FzbTo6UGFnZUNvdW50IG9sZFBhZ2VDb3VudCA9
IHNpemVJblBhZ2VzKCk7CiAgICAgY29uc3QgV2FzbTo6UGFnZUNvdW50IG5ld1BhZ2VDb3VudCA9
IG9sZFBhZ2VDb3VudCArIGRlbHRhOwogICAgIGlmICghbmV3UGFnZUNvdW50IHx8ICFuZXdQYWdl
Q291bnQuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoR3Jvd0ZhaWxS
ZWFzb246OkludmFsaWRHcm93U2l6ZSk7CkBAIC0zOTEsNTIgKzU0Myw1OCBAQCBFeHBlY3RlZDxQ
YWdlQ291bnQsIE1lbW9yeTo6R3Jvd0ZhaWxSZWFzb24+IE1lbW9yeTo6Z3JvdyhQYWdlQ291bnQg
ZGVsdGEpCiAgICAgICAgIHJldHVybiBzdWNjZXNzKCk7CiAKICAgICBkYXRhTG9nTG5JZih2ZXJi
b3NlLCAiTWVtb3J5Ojpncm93KCIsIGRlbHRhLCAiKSB0byAiLCBuZXdQYWdlQ291bnQsICIgZnJv
bSAiLCAqdGhpcyk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobmV3UGFnZUNvdW50ID4gUGFnZUNvdW50
Ojpmcm9tQnl0ZXMobV9zaXplKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobmV3UGFnZUNvdW50ID4g
UGFnZUNvdW50Ojpmcm9tQnl0ZXMoc2l6ZSgpKSk7CiAKICAgICBpZiAobWF4aW11bSgpICYmIG5l
d1BhZ2VDb3VudCA+IG1heGltdW0oKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEdy
b3dGYWlsUmVhc29uOjpXb3VsZEV4Y2VlZE1heGltdW0pOwogCiAgICAgc2l6ZV90IGRlc2lyZWRT
aXplID0gbmV3UGFnZUNvdW50LmJ5dGVzKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZGVzaXJlZFNp
emUgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKLSAgICBSRUxFQVNFX0FTU0VSVChkZXNpcmVk
U2l6ZSA+IG1fc2l6ZSk7Ci0gICAgc2l6ZV90IGV4dHJhQnl0ZXMgPSBkZXNpcmVkU2l6ZSAtIG1f
c2l6ZTsKLSAgICBSRUxFQVNFX0FTU0VSVChleHRyYUJ5dGVzKTsKLSAgICBib29sIGFsbG9jYXRp
b25TdWNjZXNzID0gdHJ5QWxsb2NhdGUoCi0gICAgICAgIFsmXSAoKSAtPiBNZW1vcnlSZXN1bHQ6
OktpbmQgewotICAgICAgICAgICAgcmV0dXJuIG1lbW9yeU1hbmFnZXIoKS50cnlBbGxvY2F0ZVBo
eXNpY2FsQnl0ZXMoZXh0cmFCeXRlcyk7Ci0gICAgICAgIH0sIG1fbm90aWZ5TWVtb3J5UHJlc3N1
cmUsIG1fc3luY1RyeVRvUmVjbGFpbU1lbW9yeSk7Ci0gICAgaWYgKCFhbGxvY2F0aW9uU3VjY2Vz
cykKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpPdXRPZk1l
bW9yeSk7Ci0KKyAgICBSRUxFQVNFX0FTU0VSVChkZXNpcmVkU2l6ZSA+IHNpemUoKSk7CiAgICAg
c3dpdGNoIChtb2RlKCkpIHsKICAgICBjYXNlIE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nOiB7
CisgICAgICAgIGJvb2wgYWxsb2NhdGlvblN1Y2Nlc3MgPSB0cnlBbGxvY2F0ZSgKKyAgICAgICAg
ICAgIFsmXSAoKSAtPiBNZW1vcnlSZXN1bHQ6OktpbmQgeworICAgICAgICAgICAgICAgIHJldHVy
biBtZW1vcnlNYW5hZ2VyKCkudHJ5QWxsb2NhdGVQaHlzaWNhbEJ5dGVzKGRlc2lyZWRTaXplKTsK
KyAgICAgICAgICAgIH0sIG1fbm90aWZ5TWVtb3J5UHJlc3N1cmUsIG1fc3luY1RyeVRvUmVjbGFp
bU1lbW9yeSk7CisgICAgICAgIGlmICghYWxsb2NhdGlvblN1Y2Nlc3MpCisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoR3Jvd0ZhaWxSZWFzb246Ok91dE9mTWVtb3J5KTsKKwogICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtYXhpbXVtKCkuYnl0ZXMoKSAhPSAwKTsKIAogICAgICAgICB2
b2lkKiBuZXdNZW1vcnkgPSBHaWdhY2FnZTo6dHJ5QWxsb2NhdGVaZXJvZWRWaXJ0dWFsUGFnZXMo
R2lnYWNhZ2U6OlByaW1pdGl2ZSwgZGVzaXJlZFNpemUpOwogICAgICAgICBpZiAoIW5ld01lbW9y
eSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChHcm93RmFpbFJlYXNvbjo6T3V0
T2ZNZW1vcnkpOwogCi0gICAgICAgIG1lbWNweShuZXdNZW1vcnksIG1lbW9yeSgpLCBtX3NpemUp
OwotICAgICAgICBpZiAobV9tZW1vcnkpCi0gICAgICAgICAgICBHaWdhY2FnZTo6ZnJlZVZpcnR1
YWxQYWdlcyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBtZW1vcnkoKSwgbV9zaXplKTsKLSAgICAgICAg
bV9tZW1vcnkgPSBDYWdlZE1lbW9yeShuZXdNZW1vcnksIGRlc2lyZWRTaXplKTsKLSAgICAgICAg
bV9tYXBwZWRDYXBhY2l0eSA9IGRlc2lyZWRTaXplOwotICAgICAgICBtX3NpemUgPSBkZXNpcmVk
U2l6ZTsKKyAgICAgICAgbWVtY3B5KG5ld01lbW9yeSwgbWVtb3J5KCksIHNpemUoKSk7CisgICAg
ICAgIGF1dG8gbmV3SGFuZGxlID0gYWRvcHRSZWYoKm5ldyBNZW1vcnlIYW5kbGUobmV3TWVtb3J5
LCBkZXNpcmVkU2l6ZSwgZGVzaXJlZFNpemUsIGluaXRpYWwoKSwgbWF4aW11bSgpLCBzaGFyaW5n
TW9kZSgpLCBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpOworICAgICAgICBtX2hhbmRsZSA9
IFdURk1vdmUobmV3SGFuZGxlKTsKKwogICAgICAgICBBU1NFUlQobWVtb3J5KCkgPT0gbmV3TWVt
b3J5KTsKICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MoKTsKICAgICB9CiAgICAgY2FzZSBNZW1vcnlN
b2RlOjpTaWduYWxpbmc6IHsKKyAgICAgICAgc2l6ZV90IGV4dHJhQnl0ZXMgPSBkZXNpcmVkU2l6
ZSAtIHNpemUoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXh0cmFCeXRlcyk7CisgICAgICAg
IGJvb2wgYWxsb2NhdGlvblN1Y2Nlc3MgPSB0cnlBbGxvY2F0ZSgKKyAgICAgICAgICAgIFsmXSAo
KSAtPiBNZW1vcnlSZXN1bHQ6OktpbmQgeworICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcnlN
YW5hZ2VyKCkudHJ5QWxsb2NhdGVQaHlzaWNhbEJ5dGVzKGV4dHJhQnl0ZXMpOworICAgICAgICAg
ICAgfSwgbV9ub3RpZnlNZW1vcnlQcmVzc3VyZSwgbV9zeW5jVHJ5VG9SZWNsYWltTWVtb3J5KTsK
KyAgICAgICAgaWYgKCFhbGxvY2F0aW9uU3VjY2VzcykKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChHcm93RmFpbFJlYXNvbjo6T3V0T2ZNZW1vcnkpOworCiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1lbW9yeSgpKTsKKwogICAgICAgICAvLyBTaWduYWxpbmcgbWVtb3J5IG11c3Qg
aGF2ZSBiZWVuIHByZS1hbGxvY2F0ZWQgdmlydHVhbGx5LgotICAgICAgICB1aW50OF90KiBzdGFy
dEFkZHJlc3MgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWVtb3J5KCkpICsgbV9zaXplOworICAg
ICAgICB1aW50OF90KiBzdGFydEFkZHJlc3MgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWVtb3J5
KCkpICsgc2l6ZSgpOwogICAgICAgICAKICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1h
cmtpbmcgV2ViQXNzZW1ibHkgbWVtb3J5J3MgIiwgUmF3UG9pbnRlcihtZW1vcnkoKSksICIgYXMg
cmVhZCt3cml0ZSBpbiByYW5nZSBbIiwgUmF3UG9pbnRlcihzdGFydEFkZHJlc3MpLCAiLCAiLCBS
YXdQb2ludGVyKHN0YXJ0QWRkcmVzcyArIGV4dHJhQnl0ZXMpLCAiKSIpOwogICAgICAgICBpZiAo
bXByb3RlY3Qoc3RhcnRBZGRyZXNzLCBleHRyYUJ5dGVzLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRF
KSkgewogICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihl
cnJubyksICJcbiIpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgfQotICAgICAgICBtX21lbW9yeS5yZWNhZ2UobV9zaXplLCBkZXNpcmVkU2l6ZSk7
Ci0gICAgICAgIG1fc2l6ZSA9IGRlc2lyZWRTaXplOworCisgICAgICAgIG1faGFuZGxlLT5ncm93
VG9TaXplKGRlc2lyZWRTaXplKTsKICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MoKTsKICAgICB9CiAg
ICAgfQpAQCAtNDU5LDcgKzYxNyw4IEBAIHZvaWQgTWVtb3J5OjpyZWdpc3Rlckluc3RhbmNlKElu
c3RhbmNlKiBpbnN0YW5jZSkKIAogdm9pZCBNZW1vcnk6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKIHsKLSAgICBvdXQucHJpbnQoIk1lbW9yeSBhdCAiLCBSYXdQb2ludGVyKG1lbW9yeSgp
KSwgIiwgc2l6ZSAiLCBtX3NpemUsICJCIGNhcGFjaXR5ICIsIG1fbWFwcGVkQ2FwYWNpdHksICJC
LCBpbml0aWFsICIsIG1faW5pdGlhbCwgIiBtYXhpbXVtICIsIG1fbWF4aW11bSwgIiBtb2RlICIs
IG1ha2VTdHJpbmcobV9tb2RlKSk7CisgICAgYXV0byBoYW5kbGUgPSBtX2hhbmRsZS5jb3B5UmVm
KCk7CisgICAgb3V0LnByaW50KCJNZW1vcnkgYXQgIiwgUmF3UG9pbnRlcihoYW5kbGUtPm1lbW9y
eSgpKSwgIiwgc2l6ZSAiLCBoYW5kbGUtPnNpemUoKSwgIkIgY2FwYWNpdHkgIiwgaGFuZGxlLT5t
YXBwZWRDYXBhY2l0eSgpLCAiQiwgaW5pdGlhbCAiLCBoYW5kbGUtPmluaXRpYWwoKSwgIiBtYXhp
bXVtICIsIGhhbmRsZS0+bWF4aW11bSgpLCAiIG1vZGUgIiwgbWFrZVN0cmluZyhoYW5kbGUtPm1v
ZGUoKSksICIgc2hhcmluZ01vZGUgIiwgbWFrZVN0cmluZyhoYW5kbGUtPnNoYXJpbmdNb2RlKCkp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTWVtb3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TWVtb3J5LmgKaW5kZXggOTY3MDgzOGYxNzExZjgyZTdiYjRlMTViZjhiNWRkM2I4NDgyNmI1MS4u
ZDIxNzlmYzAwNzdmMmMyMmYwYTEyNjJjZTY3NWI3ODdmMGM1M2E5YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21NZW1vcnkuaApAQCAtNDQsMzkgKzQ0LDgwIEBAIGNsYXNzIFByaW50
U3RyZWFtOwogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OworCiBuYW1lc3BhY2UgV2FzbSB7CiAKIGNsYXNzIEluc3RhbmNlOwogCi1jbGFzcyBNZW1vcnkg
OiBwdWJsaWMgUmVmQ291bnRlZDxNZW1vcnk+IHsKK2NsYXNzIE1lbW9yeUhhbmRsZSBmaW5hbCA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNZW1vcnlIYW5kbGU+IHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShNZW1vcnlIYW5kbGUpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworICAgIGZyaWVuZCBMTEludE9mZnNldHNFeHRyYWN0b3I7CitwdWJsaWM6CisgICAgTWVtb3J5
SGFuZGxlKHZvaWQqLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG1hcHBlZENhcGFjaXR5LCBQYWdlQ291
bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIE1lbW9yeVNoYXJpbmdNb2RlIHNoYXJpbmdN
b2RlLCBNZW1vcnlNb2RlIG1vZGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIH5NZW1vcnlIYW5k
bGUoKTsKKworICAgIHZvaWQqIG1lbW9yeSgpIGNvbnN0IHsgQVNTRVJUKG1fbWVtb3J5LmdldE1h
eUJlTnVsbChtX21hcHBlZENhcGFjaXR5KSA9PSBtX21lbW9yeS5nZXRVbnNhZmUoKSk7IHJldHVy
biBtX21lbW9yeS5nZXRNYXlCZU51bGwobV9tYXBwZWRDYXBhY2l0eSk7IH0KKyAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIHNpemVfdCBtYXBwZWRDYXBhY2l0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwcGVkQ2FwYWNpdHk7IH0KKyAgICBQYWdlQ291bnQgaW5p
dGlhbCgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbDsgfQorICAgIFBhZ2VDb3VudCBtYXhpbXVt
KCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtOyB9CisgICAgTWVtb3J5U2hhcmluZ01vZGUgc2hh
cmluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3NoYXJpbmdNb2RlOyB9CisgICAgTWVtb3J5TW9k
ZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZlNpemUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTWVtb3J5SGFuZGxlLCBtX3Np
emUpOyB9CisgICAgTG9jayYgbG9jaygpIHsgcmV0dXJuIG1fbG9jazsgfQorCisgICAgdm9pZCBn
cm93VG9TaXplKHNpemVfdCBzaXplKQorICAgIHsKKyAgICAgICAgbV9zaXplID0gc2l6ZTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgdXNpbmcgQ2FnZWRNZW1vcnkgPSBDYWdlZFB0cjxHaWdhY2Fn
ZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47CisgICAgQ2FnZWRNZW1vcnkgbV9tZW1v
cnk7CisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKKyAgICBzaXplX3QgbV9tYXBwZWRDYXBhY2l0
eSB7IDAgfTsKKyAgICBQYWdlQ291bnQgbV9pbml0aWFsOworICAgIFBhZ2VDb3VudCBtX21heGlt
dW07CisgICAgTWVtb3J5U2hhcmluZ01vZGUgbV9zaGFyaW5nTW9kZSB7IE1lbW9yeVNoYXJpbmdN
b2RlOjpEZWZhdWx0IH07CisgICAgTWVtb3J5TW9kZSBtX21vZGUgeyBNZW1vcnlNb2RlOjpCb3Vu
ZHNDaGVja2luZyB9OworICAgIExvY2sgbV9sb2NrOworfTsKKworY2xhc3MgTWVtb3J5IGZpbmFs
IDogcHVibGljIFJlZkNvdW50ZWQ8TWVtb3J5PiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
TWVtb3J5KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBmcmllbmQgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogcHVibGljOgogICAgIHZvaWQgZHVtcChXVEY6OlByaW50U3RyZWFt
JikgY29uc3Q7CiAKLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4g
ISFtX21lbW9yeTsgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVy
biAhIW1faGFuZGxlLT5tZW1vcnkoKTsgfQogICAgIAogICAgIGVudW0gTm90aWZ5UHJlc3N1cmUg
eyBOb3RpZnlQcmVzc3VyZVRhZyB9OwogICAgIGVudW0gU3luY1RyeVRvUmVjbGFpbSB7IFN5bmNU
cnlUb1JlY2xhaW1UYWcgfTsKICAgICBlbnVtIEdyb3dTdWNjZXNzIHsgR3Jvd1N1Y2Nlc3NUYWcg
fTsKIAogICAgIHN0YXRpYyBSZWY8TWVtb3J5PiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUmVmUHRy
PE1lbW9yeT4gdHJ5Q3JlYXRlKFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwg
V1RGOjpGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3Vy
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xh
aW1NZW1vcnksIFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdl
Q291bnQpPiYmIGdyb3dTdWNjZXNzQ2FsbGJhY2spOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWY8TWVtb3J5PiBjcmVhdGUoUmVmPE1lbW9yeUhhbmRsZT4mJiwgV1RGOjpGdW5jdGlv
bjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgV1RGOjpGdW5j
dGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdU
Rjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdy
b3dTdWNjZXNzQ2FsbGJhY2spOworICAgIHN0YXRpYyBSZWZQdHI8TWVtb3J5PiB0cnlDcmVhdGUo
UGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBNZW1vcnlTaGFyaW5nTW9kZSwg
V1RGOjpGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3Vy
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xh
aW1NZW1vcnksIFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdl
Q291bnQpPiYmIGdyb3dTdWNjZXNzQ2FsbGJhY2spOwogCi0gICAgfk1lbW9yeSgpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIH5NZW1vcnkoKTsKIAogICAgIHN0YXRpYyBzaXplX3QgZmFzdE1hcHBl
ZFJlZHpvbmVCeXRlcygpOwogICAgIHN0YXRpYyBzaXplX3QgZmFzdE1hcHBlZEJ5dGVzKCk7IC8v
IEluY2x1ZGVzIHJlZHpvbmUuCi0gICAgc3RhdGljIGJvb2wgYWRkcmVzc0lzSW5BY3RpdmVGYXN0
TWVtb3J5KHZvaWQqKTsKLQotICAgIHZvaWQqIG1lbW9yeSgpIGNvbnN0IHsgQVNTRVJUKG1fbWVt
b3J5LmdldE1heUJlTnVsbChzaXplKCkpID09IG1fbWVtb3J5LmdldFVuc2FmZSgpKTsgcmV0dXJu
IG1fbWVtb3J5LmdldE1heUJlTnVsbChzaXplKCkpOyB9Ci0gICAgc2l6ZV90IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX3NpemU7IH0KLSAgICBQYWdlQ291bnQgc2l6ZUluUGFnZXMoKSBjb25zdCB7
IHJldHVybiBQYWdlQ291bnQ6OmZyb21CeXRlcyhtX3NpemUpOyB9CisgICAgc3RhdGljIGJvb2wg
YWRkcmVzc0lzSW5BY3RpdmVHcm93YWJsZU1lbW9yeSh2b2lkKik7CiAKLSAgICBQYWdlQ291bnQg
aW5pdGlhbCgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbDsgfQotICAgIFBhZ2VDb3VudCBtYXhp
bXVtKCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtOyB9CisgICAgdm9pZCogbWVtb3J5KCkgY29u
c3QgeyByZXR1cm4gbV9oYW5kbGUtPm1lbW9yeSgpOyB9CisgICAgc2l6ZV90IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX2hhbmRsZS0+c2l6ZSgpOyB9CisgICAgUGFnZUNvdW50IHNpemVJblBhZ2Vz
KCkgY29uc3QgeyByZXR1cm4gUGFnZUNvdW50Ojpmcm9tQnl0ZXMoc2l6ZSgpKTsgfQorICAgIHNp
emVfdCBib3VuZHNDaGVja2luZ1NpemUoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZS0+bWFwcGVk
Q2FwYWNpdHkoKTsgfQorICAgIFBhZ2VDb3VudCBpbml0aWFsKCkgY29uc3QgeyByZXR1cm4gbV9o
YW5kbGUtPmluaXRpYWwoKTsgfQorICAgIFBhZ2VDb3VudCBtYXhpbXVtKCkgY29uc3QgeyByZXR1
cm4gbV9oYW5kbGUtPm1heGltdW0oKTsgfQorICAgIE1lbW9yeUhhbmRsZSYgaGFuZGxlKCkgeyBy
ZXR1cm4gbV9oYW5kbGUuZ2V0KCk7IH0KIAotICAgIE1lbW9yeU1vZGUgbW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbW9kZTsgfQorICAgIE1lbW9yeVNoYXJpbmdNb2RlIHNoYXJpbmdNb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9oYW5kbGUtPnNoYXJpbmdNb2RlKCk7IH0KKyAgICBNZW1vcnlNb2RlIG1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZS0+bW9kZSgpOyB9CiAKICAgICBlbnVtIGNsYXNz
IEdyb3dGYWlsUmVhc29uIHsKICAgICAgICAgSW52YWxpZERlbHRhLApAQCAtODksMjEgKzEzMCwx
NiBAQCBjbGFzcyBNZW1vcnkgOiBwdWJsaWMgUmVmQ291bnRlZDxNZW1vcnk+IHsKIAogICAgIHZv
aWQgY2hlY2soKSB7ICBBU1NFUlQoIWRlbGV0aW9uSGFzQmVndW4oKSk7IH0KIAotICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNZW1vcnkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTWVt
b3J5LCBtX21lbW9yeSk7IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2l6ZSgpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihNZW1vcnksIG1fc2l6ZSk7IH0KKyAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mSGFuZGxlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1lbW9yeSwg
bV9oYW5kbGUpOyB9CiAKIHByaXZhdGU6CiAgICAgTWVtb3J5KCk7Ci0gICAgTWVtb3J5KHZvaWQq
IG1lbW9yeSwgUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBzaXplX3QgbWFw
cGVkQ2FwYWNpdHksIE1lbW9yeU1vZGUsIFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3Vy
ZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9S
ZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jv
d1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKTsK
LSAgICBNZW1vcnkoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9y
eSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+
JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayk7CisgICAgTWVtb3J5KFJlZjxNZW1vcnlIYW5kbGU+JiYs
IFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1
cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNs
YWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFn
ZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBNZW1vcnkoUGFnZUNvdW50IGlu
aXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBNZW1vcnlTaGFyaW5nTW9kZSwgV1RGOjpGdW5jdGlv
bjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgV1RGOjpGdW5j
dGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdU
Rjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdy
b3dTdWNjZXNzQ2FsbGJhY2spOwogCi0gICAgdXNpbmcgQ2FnZWRNZW1vcnkgPSBDYWdlZFB0cjxH
aWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47Ci0gICAgQ2FnZWRNZW1vcnkg
bV9tZW1vcnk7Ci0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLSAgICBQYWdlQ291bnQgbV9pbml0
aWFsOwotICAgIFBhZ2VDb3VudCBtX21heGltdW07Ci0gICAgc2l6ZV90IG1fbWFwcGVkQ2FwYWNp
dHkgeyAwIH07Ci0gICAgTWVtb3J5TW9kZSBtX21vZGUgeyBNZW1vcnlNb2RlOjpCb3VuZHNDaGVj
a2luZyB9OworICAgIEV4cGVjdGVkPFBhZ2VDb3VudCwgR3Jvd0ZhaWxSZWFzb24+IGdyb3dTaGFy
ZWQoUGFnZUNvdW50KTsKKworICAgIFJlZjxNZW1vcnlIYW5kbGU+IG1faGFuZGxlOwogICAgIFdU
Rjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+IG1fbm90aWZ5TWVtb3J5UHJlc3N1cmU7
CiAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiBtX3N5bmNUcnlUb1Jl
Y2xhaW1NZW1vcnk7CiAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291
bnQsIFBhZ2VDb3VudCk+IG1fZ3Jvd1N1Y2Nlc3NDYWxsYmFjazsKQEAgLTExOSw3ICsxNTUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogY2xhc3MgTWVtb3J5IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgc2l6ZV90IG1heEZhc3RNZW1vcnlDb3VudCgpIHsgcmV0dXJuIDA7IH0K
LSAgICBzdGF0aWMgYm9vbCBhZGRyZXNzSXNJbkFjdGl2ZUZhc3RNZW1vcnkodm9pZCopIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGJvb2wgYWRkcmVzc0lzSW5BY3RpdmVHcm93YWJsZU1l
bW9yeSh2b2lkKikgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpXYXNtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5
SW5mb3JtYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUlu
Zm9ybWF0aW9uLmNwcAppbmRleCA2YjRjMmQxZmQ3Mzg0ZDdkY2EzMDMxOGQ3MmMxZjU2MTE5ZjVm
NTYwLi5mMmM2ZmE1MDg5ODhjMGM0OTA4MDM3MTgzMjE2ODcxZTg1NDBjZmUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAK
QEAgLTQyLDE5ICs0MiwxOSBAQCBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8mIFBpbm5lZFJlZ2lz
dGVySW5mbzo6Z2V0KCkKICAgICAgICAgaWYgKCFDb250ZXh0Ojp1c2VGYXN0VExTKCkpCiAgICAg
ICAgICAgICArK251bWJlck9mUGlubmVkUmVnaXN0ZXJzOwogICAgICAgICBHUFJSZWcgYmFzZU1l
bW9yeVBvaW50ZXIgPSBHUFJJbmZvOjpyZWdDUzM7Ci0gICAgICAgIEdQUlJlZyBzaXplUmVnaXN0
ZXIgPSBHUFJJbmZvOjpyZWdDUzQ7CisgICAgICAgIEdQUlJlZyBib3VuZHNDaGVja2luZ1NpemVS
ZWdpc3RlciA9IEdQUkluZm86OnJlZ0NTNDsKICAgICAgICAgR1BSUmVnIHdhc21Db250ZXh0SW5z
dGFuY2VQb2ludGVyID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgaWYgKCFDb250ZXh0Ojp1c2VG
YXN0VExTKCkpCiAgICAgICAgICAgICB3YXNtQ29udGV4dEluc3RhbmNlUG9pbnRlciA9IEdQUklu
Zm86OnJlZ0NTMDsKIAotICAgICAgICBzdGF0aWNQaW5uZWRSZWdpc3RlckluZm8uY29uc3RydWN0
KHNpemVSZWdpc3RlciwgYmFzZU1lbW9yeVBvaW50ZXIsIHdhc21Db250ZXh0SW5zdGFuY2VQb2lu
dGVyKTsKKyAgICAgICAgc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvLmNvbnN0cnVjdChib3VuZHND
aGVja2luZ1NpemVSZWdpc3RlciwgYmFzZU1lbW9yeVBvaW50ZXIsIHdhc21Db250ZXh0SW5zdGFu
Y2VQb2ludGVyKTsKICAgICB9KTsKIAogICAgIHJldHVybiBzdGF0aWNQaW5uZWRSZWdpc3Rlcklu
Zm8uZ2V0KCk7CiB9CiAKLVBpbm5lZFJlZ2lzdGVySW5mbzo6UGlubmVkUmVnaXN0ZXJJbmZvKEdQ
UlJlZyBzaXplUmVnaXN0ZXIsIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlciwgR1BSUmVnIHdhc21D
b250ZXh0SW5zdGFuY2VQb2ludGVyKQotICAgIDogc2l6ZVJlZ2lzdGVyKHNpemVSZWdpc3RlcikK
K1Bpbm5lZFJlZ2lzdGVySW5mbzo6UGlubmVkUmVnaXN0ZXJJbmZvKEdQUlJlZyBib3VuZHNDaGVj
a2luZ1NpemVSZWdpc3RlciwgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyLCBHUFJSZWcgd2FzbUNv
bnRleHRJbnN0YW5jZVBvaW50ZXIpCisgICAgOiBib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcihi
b3VuZHNDaGVja2luZ1NpemVSZWdpc3RlcikKICAgICAsIGJhc2VNZW1vcnlQb2ludGVyKGJhc2VN
ZW1vcnlQb2ludGVyKQogICAgICwgd2FzbUNvbnRleHRJbnN0YW5jZVBvaW50ZXIod2FzbUNvbnRl
eHRJbnN0YW5jZVBvaW50ZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oCmluZGV4IDRiOGVmOGU4YmM3YWM3ZWZjOWE3OTk0OTRl
MjY4OTFmYThkZDYyOWYuLjIzYTg2NTMwYmFlMTBmZGY3ZTBkNDJlMzVhYjkwNzdiYjczZGY2NWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1h
dGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1h
dGlvbi5oCkBAIC0zOSw3ICszOSw3IEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20g
ewogCiBzdHJ1Y3QgUGlubmVkU2l6ZVJlZ2lzdGVySW5mbyB7Ci0gICAgR1BSUmVnIHNpemVSZWdp
c3RlcjsKKyAgICBHUFJSZWcgYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXI7CiAgICAgdW5zaWdu
ZWQgc2l6ZU9mZnNldDsKIH07CiAKQEAgLTU2LDExICs1NiwxMSBAQCBjbGFzcyBQaW5uZWRSZWdp
c3RlckluZm8gewogICAgICAgICBpZiAod2FzbUNvbnRleHRJbnN0YW5jZVBvaW50ZXIgIT0gSW52
YWxpZEdQUlJlZykKICAgICAgICAgICAgIHJlc3VsdC5zZXQod2FzbUNvbnRleHRJbnN0YW5jZVBv
aW50ZXIpOwogICAgICAgICBpZiAobW9kZSAhPSBNZW1vcnlNb2RlOjpTaWduYWxpbmcpCi0gICAg
ICAgICAgICByZXN1bHQuc2V0KHNpemVSZWdpc3Rlcik7CisgICAgICAgICAgICByZXN1bHQuc2V0
KGJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKLSAgICBHUFJSZWcgc2l6ZVJlZ2lzdGVyOworICAgIEdQUlJlZyBib3VuZHNDaGVja2lu
Z1NpemVSZWdpc3RlcjsKICAgICBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXI7CiAgICAgR1BSUmVn
IHdhc21Db250ZXh0SW5zdGFuY2VQb2ludGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlNb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21NZW1vcnlNb2RlLmNwcAppbmRleCBiMWJjOTg1ZGQ3NmJiZmZiNWQyYmI1YTNk
MTA4YzA2N2E0NzM3NzJkLi45YWQ4ZjgwYjZhYTIyYmZmMDMyYmRkNDZkMTc4NmVmY2RlZjNjYzQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5TW9kZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeU1vZGUuY3BwCkBA
IC00Miw2ICs0MiwxNiBAQCBjb25zdCBjaGFyKiBtYWtlU3RyaW5nKE1lbW9yeU1vZGUgbW9kZSkK
ICAgICByZXR1cm4gIiI7CiB9CiAKK2NvbnN0IGNoYXIqIG1ha2VTdHJpbmcoTWVtb3J5U2hhcmlu
Z01vZGUgc2hhcmluZ01vZGUpCit7CisgICAgc3dpdGNoIChzaGFyaW5nTW9kZSkgeworICAgIGNh
c2UgTWVtb3J5U2hhcmluZ01vZGU6OkRlZmF1bHQ6IHJldHVybiAiRGVmYXVsdCI7CisgICAgY2Fz
ZSBNZW1vcnlTaGFyaW5nTW9kZTo6U2hhcmVkOiByZXR1cm4gIlNoYXJlZCI7CisgICAgfQorICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuICIiOworfQorCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6V2FzbQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeU1vZGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlNb2RlLmgKaW5kZXggYzAzODc0
NmQ2MWQ0MmE5NTNjY2Y0YjVkMGZiMjA3NWU5MjY1NDFmOC4uNTFiMjEzMzZjODk0NmJkZWI4N2Nm
MTM5NWFkOTk3NTMxMzUxNTgyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1lbW9yeU1vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TWVtb3J5TW9kZS5oCkBAIC00MCw2ICs0MCwxMyBAQCBlbnVtIGNsYXNzIE1lbW9yeU1vZGUgOiB1
aW50OF90IHsKIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IE51bWJlck9mTWVtb3J5TW9kZXMgPSAy
OwogSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgY2hhciogbWFrZVN0cmluZyhNZW1vcnlNb2RlKTsK
IAorZW51bSBjbGFzcyBNZW1vcnlTaGFyaW5nTW9kZSA6IHVpbnQ4X3QgeworICAgIERlZmF1bHQs
CisgICAgU2hhcmVkLAorfTsKKworSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgY2hhciogbWFrZVN0
cmluZyhNZW1vcnlTaGFyaW5nTW9kZSk7CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCiAK
ICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1RvV2FzbS5jcHAKaW5kZXggZDhkMTUyMTRkNDBmMGE4NWMzMWYyYTJiMjkyZjgzNWQz
ZjM2OWQ2Ni4uYmU5NDg3NGE1YTRiNDU3ZDIzMmVmZDg4ZDc3OWQxYmIzZDliM2ZkMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcApAQCAtMjIxLDcgKzIyMSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiBjcmVhdGVKU1RvV2FzbVdyYXBw
ZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0CiAKICAgICBpZiAoISFpbmZvLm1lbW9yeSkgewog
ICAgICAgICBHUFJSZWcgYmFzZU1lbW9yeSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7
Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoT3JTaXplID0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCku
cHJvbG9ndWVTY3JhdGNoR1BSc1swXTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hPckJvdW5kc0No
ZWNraW5nU2l6ZSA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpLnByb2xvZ3VlU2NyYXRjaEdQUnNb
MF07CiAKICAgICAgICAgaWYgKENvbnRleHQ6OnVzZUZhc3RUTFMoKSkKICAgICAgICAgICAgIGpp
dC5sb2FkV2FzbUNvbnRleHRJbnN0YW5jZShiYXNlTWVtb3J5KTsKQEAgLTIyOSwxNSArMjI5LDE1
IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiBjcmVhdGVKU1RvV2FzbVdyYXBw
ZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0CiAgICAgICAgIEdQUlJlZyBjdXJyZW50SW5zdGFu
Y2VHUFIgPSBDb250ZXh0Ojp1c2VGYXN0VExTKCkgPyBiYXNlTWVtb3J5IDogd2FzbUNvbnRleHRJ
bnN0YW5jZUdQUjsKICAgICAgICAgaWYgKGlzQVJNNjRFKCkpIHsKICAgICAgICAgICAgIGlmICht
b2RlICE9IFdhc206Ok1lbW9yeU1vZGU6OlNpZ25hbGluZykKLSAgICAgICAgICAgICAgICBzY3Jh
dGNoT3JTaXplID0gcGlubmVkUmVncy5zaXplUmVnaXN0ZXI7Ci0gICAgICAgICAgICBqaXQubG9h
ZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY3VycmVudEluc3RhbmNlR1BSLCBXYXNtOjpJbnN0
YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCBzY3JhdGNoT3JTaXplKTsKKyAgICAg
ICAgICAgICAgICBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUgPSBwaW5uZWRSZWdzLmJvdW5k
c0NoZWNraW5nU2l6ZVJlZ2lzdGVyOworICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKGN1cnJlbnRJbnN0YW5jZUdQUiwgV2FzbTo6SW5zdGFuY2U6Om9mZnNldE9m
Q2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkpLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKG1vZGUgIT0gV2FzbTo6TWVtb3J5
TW9kZTo6U2lnbmFsaW5nKQotICAgICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QWRkcmVzcyhjdXJyZW50SW5zdGFuY2VHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNh
Y2hlZE1lbW9yeVNpemUoKSksIHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyKTsKKyAgICAgICAgICAg
ICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY3VycmVudEluc3RhbmNlR1BS
LCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSksIHBp
bm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIpOwogICAgICAgICB9CiAKICAgICAg
ICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGN1cnJlbnRJbnN0YW5jZUdQUiwg
V2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKLSAg
ICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1v
cnksIHNjcmF0Y2hPclNpemUsIHNjcmF0Y2hPclNpemUpOworICAgICAgICBqaXQuY2FnZUNvbmRp
dGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgc2NyYXRjaE9yQm91bmRz
Q2hlY2tpbmdTaXplLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOwogICAgIH0KIAogICAg
IENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LnRocmVhZFNhZmVQYXRjaGFibGVOZWFyQ2Fs
bCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlJbnN0YW5jZS5jcHAKaW5kZXggNjY5NjFjMjMyYTRlYTRlNDc0ZjY3NzM5MzIzMmNkMWVh
MmVjNGM1OS4uZTQ5ZmM2OTI1YTk5NWU1ZTBhZjU5YmVmM2U2MDIwZmJkNDAzYmEwYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5z
dGFuY2UuY3BwCkBAIC0yOTEsNyArMjkxLDcgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dl
YkFzc2VtYmx5SW5zdGFuY2U6OnRyeUNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KgogICAg
ICAgICAgICAgYXV0byoganNNZW1vcnkgPSBKU1dlYkFzc2VtYmx5TWVtb3J5Ojp0cnlDcmVhdGUo
Z2xvYmFsT2JqZWN0LCB2bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseU1lbW9yeVN0cnVjdHVy
ZSgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgbnVsbHB0
cik7CiAKLSAgICAgICAgICAgIFJlZlB0cjxXYXNtOjpNZW1vcnk+IG1lbW9yeSA9IFdhc206Ok1l
bW9yeTo6dHJ5Q3JlYXRlKG1vZHVsZUluZm9ybWF0aW9uLm1lbW9yeS5pbml0aWFsKCksIG1vZHVs
ZUluZm9ybWF0aW9uLm1lbW9yeS5tYXhpbXVtKCksCisgICAgICAgICAgICBSZWZQdHI8V2FzbTo6
TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OnRyeUNyZWF0ZShtb2R1bGVJbmZvcm1hdGlv
bi5tZW1vcnkuaW5pdGlhbCgpLCBtb2R1bGVJbmZvcm1hdGlvbi5tZW1vcnkubWF4aW11bSgpLCBX
YXNtOjpNZW1vcnlTaGFyaW5nTW9kZTo6RGVmYXVsdCwKICAgICAgICAgICAgICAgICBbJnZtXSAo
V2FzbTo6TWVtb3J5OjpOb3RpZnlQcmVzc3VyZSkgeyB2bS5oZWFwLmNvbGxlY3RBc3luYyhDb2xs
ZWN0aW9uU2NvcGU6OkZ1bGwpOyB9LAogICAgICAgICAgICAgICAgIFsmdm1dIChXYXNtOjpNZW1v
cnk6OlN5bmNUcnlUb1JlY2xhaW0pIHsgdm0uaGVhcC5jb2xsZWN0U3luYyhDb2xsZWN0aW9uU2Nv
cGU6OkZ1bGwpOyB9LAogICAgICAgICAgICAgICAgIFsmdm0sIGpzTWVtb3J5XSAoV2FzbTo6TWVt
b3J5OjpHcm93U3VjY2VzcywgV2FzbTo6UGFnZUNvdW50IG9sZFBhZ2VDb3VudCwgV2FzbTo6UGFn
ZUNvdW50IG5ld1BhZ2VDb3VudCkgeyBqc01lbW9yeS0+Z3Jvd1N1Y2Nlc3NDYWxsYmFjayh2bSwg
b2xkUGFnZUNvdW50LCBuZXdQYWdlQ291bnQpOyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAKaW5kZXggZGZiMDI3MDMx
NjMyZTAzYmUzZjM5YjU4Zjk4YjM2ZTgyZjcyNjIzZi4uZjdhYzY0NDk4MjFiZjEwN2ExNGY3NDhk
MDEyZDFmMjljN2I3M2U4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1
ZGUgIkFycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUg
Ik9iamVjdENvbnN0cnVjdG9yLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC03MiwxNyArNzMs
MzQgQEAgSlNXZWJBc3NlbWJseU1lbW9yeTo6SlNXZWJBc3NlbWJseU1lbW9yeShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogewogfQogCi1KU0FycmF5QnVmZmVyKiBKU1dlYkFzc2VtYmx5
TWVtb3J5OjpidWZmZXIoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNB
cnJheUJ1ZmZlciogSlNXZWJBc3NlbWJseU1lbW9yeTo6YnVmZmVyKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiB7Ci0gICAgaWYgKG1fYnVmZmVyV3JhcHBlcikKLSAgICAgICAgcmV0dXJu
IG1fYnVmZmVyV3JhcHBlci5nZXQoKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBh
dXRvKiB3cmFwcGVyID0gbV9idWZmZXJXcmFwcGVyLmdldCgpOworICAgIGlmICh3cmFwcGVyKSB7
CisgICAgICAgIGlmIChtX21lbW9yeS0+c2hhcmluZ01vZGUoKSA9PSBXYXNtOjpNZW1vcnlTaGFy
aW5nTW9kZTo6RGVmYXVsdCkKKyAgICAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCi0gICAgLy8g
V2UgY2FuJ3QgdXNlIGEgcmVmIGhlcmUgc2luY2UgaXQgZG9lc24ndCBoYXZlIGEgY29weSBjb25z
dHJ1Y3Rvci4uLgotICAgIFJlZjxXYXNtOjpNZW1vcnk+IHByb3RlY3RlZE1lbW9yeSA9IG1fbWVt
b3J5LmdldCgpOwotICAgIGF1dG8gZGVzdHJ1Y3RvciA9IGNyZWF0ZVNoYXJlZFRhc2s8dm9pZCh2
b2lkKik+KFtwcm90ZWN0ZWRNZW1vcnkgPSBXVEZNb3ZlKHByb3RlY3RlZE1lbW9yeSldICh2b2lk
KikgeyB9KTsKKyAgICAgICAgQVNTRVJUKG1fbWVtb3J5LT5zaGFyaW5nTW9kZSgpID09IFdhc206
Ok1lbW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQpOworICAgICAgICAvLyBJZiBTaGFyZWRBcnJheUJ1
ZmZlcidzIHVuZGVybHlpbmcgbWVtb3J5IGlzIG5vdCBncm93biwgd2UgY29udGludWUgdXNpbmcg
Y2FjaGVkIHdyYXBwZXIuCisgICAgICAgIGlmICh3cmFwcGVyLT5pbXBsKCktPmJ5dGVMZW5ndGgo
KSA9PSBtZW1vcnkoKS5zaXplKCkpCisgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICB9
CisKKyAgICBSZWY8V2FzbTo6TWVtb3J5SGFuZGxlPiBwcm90ZWN0ZWRIYW5kbGUgPSBtX21lbW9y
eS0+aGFuZGxlKCk7CisgICAgYXV0byBkZXN0cnVjdG9yID0gY3JlYXRlU2hhcmVkVGFzazx2b2lk
KHZvaWQqKT4oW3Byb3RlY3RlZEhhbmRsZSA9IFdURk1vdmUocHJvdGVjdGVkSGFuZGxlKV0gKHZv
aWQqKSB7IH0pOwogICAgIG1fYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyht
ZW1vcnkoKS5tZW1vcnkoKSwgbWVtb3J5KCkuc2l6ZSgpLCBXVEZNb3ZlKGRlc3RydWN0b3IpKTsK
ICAgICBtX2J1ZmZlci0+bWFrZVdhc21NZW1vcnkoKTsKLSAgICBtX2J1ZmZlcldyYXBwZXIuc2V0
KHZtLCB0aGlzLCBKU0FycmF5QnVmZmVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlC
dWZmZXJTdHJ1Y3R1cmUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCksIG1fYnVmZmVy
LmdldCgpKSk7CisgICAgaWYgKG1fbWVtb3J5LT5zaGFyaW5nTW9kZSgpID09IFdhc206Ok1lbW9y
eVNoYXJpbmdNb2RlOjpTaGFyZWQpCisgICAgICAgIG1fYnVmZmVyLT5tYWtlU2hhcmVkKCk7Cisg
ICAgYXV0byogYXJyYXlCdWZmZXIgPSBKU0FycmF5QnVmZmVyOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobV9idWZmZXItPnNoYXJpbmdNb2RlKCkpLCBtX2J1
ZmZlci5nZXQoKSk7CisgICAgaWYgKG1fbWVtb3J5LT5zaGFyaW5nTW9kZSgpID09IFdhc206Ok1l
bW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQpIHsKKyAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JGcmVl
emUoZ2xvYmFsT2JqZWN0LCBhcnJheUJ1ZmZlcik7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgbV9idWZmZXJXcmFwcGVyLnNldCh2bSwg
dGhpcywgYXJyYXlCdWZmZXIpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fYnVmZmVyV3JhcHBlcik7
CiAgICAgcmV0dXJuIG1fYnVmZmVyV3JhcHBlci5nZXQoKTsKIH0KQEAgLTExNyw3ICsxMzUsOCBA
QCB2b2lkIEpTV2ViQXNzZW1ibHlNZW1vcnk6Omdyb3dTdWNjZXNzQ2FsbGJhY2soVk0mIHZtLCBX
YXNtOjpQYWdlQ291bnQgb2xkUGFnZUNvdQogewogICAgIC8vIFdlIG5lZWQgdG8gY2xlYXIgb3V0
IHRoZSBvbGQgYXJyYXkgYnVmZmVyIGJlY2F1c2UgaXQgbWlnaHQgbm93IGJlIHBvaW50aW5nIHRv
IHN0YWxlIG1lbW9yeS4KICAgICBpZiAobV9idWZmZXIpIHsKLSAgICAgICAgbV9idWZmZXItPmRl
dGFjaCh2bSk7CisgICAgICAgIGlmIChtX21lbW9yeS0+c2hhcmluZ01vZGUoKSA9PSBXYXNtOjpN
ZW1vcnlTaGFyaW5nTW9kZTo6RGVmYXVsdCkKKyAgICAgICAgICAgIG1fYnVmZmVyLT5kZXRhY2go
dm0pOwogICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7CiAgICAgICAgIG1fYnVmZmVyV3JhcHBl
ci5jbGVhcigpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlNZW1vcnkuaAppbmRleCBhYjljNDc0NmIzY2ZhMjUwZDUxZWJjZGY0MmIz
YTVmZGI5YWI1NTVkLi5lNDk0OTAzNjkyZTU5NTQxY2ZhNzkwMzM3NmE0NTMyZjA1NjNhNDQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVt
b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1l
bW9yeS5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKLSNp
bmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAj
aW5jbHVkZSAiV2FzbU1lbW9yeS5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CkBAIC00OSwxNiArNDksMTYgQEAgY2xhc3MgSlNXZWJBc3NlbWJseU1lbW9y
eSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIHZtLndl
YkFzc2VtYmx5TWVtb3J5U3BhY2U8bW9kZT4oKTsKICAgICB9CiAKLSAgICBzdGF0aWMgSlNXZWJB
c3NlbWJseU1lbW9yeSogdHJ5Q3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJ1Y3R1cmUq
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNXZWJBc3NlbWJseU1lbW9yeSogdHJ5
Q3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwog
CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAotICAgIHZvaWQgYWRvcHQoUmVmPFdhc206Ok1l
bW9yeT4mJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZG9wdChSZWY8V2FzbTo6TWVt
b3J5PiYmKTsKICAgICBXYXNtOjpNZW1vcnkmIG1lbW9yeSgpIHsgcmV0dXJuIG1fbWVtb3J5Lmdl
dCgpOyB9Ci0gICAgSlNBcnJheUJ1ZmZlciogYnVmZmVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
KTsKKyAgICBKU0FycmF5QnVmZmVyKiBidWZmZXIoSlNHbG9iYWxPYmplY3QqKTsKICAgICBXYXNt
OjpQYWdlQ291bnQgZ3JvdyhWTSYsIEpTR2xvYmFsT2JqZWN0KiwgdWludDMyX3QgZGVsdGEpOwot
ICAgIHZvaWQgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayhWTSYsIFdhc206OlBhZ2VDb3VudCBvbGRQYWdl
Q291bnQsIFdhc206OlBhZ2VDb3VudCBuZXdQYWdlQ291bnQpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayhWTSYsIFdhc206OlBhZ2VDb3VudCBvbGRQYWdl
Q291bnQsIFdhc206OlBhZ2VDb3VudCBuZXdQYWdlQ291bnQpOwogCiBwcml2YXRlOgogICAgIEpT
V2ViQXNzZW1ibHlNZW1vcnkoVk0mLCBTdHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKaW5kZXggOTkyNzZj
MmQ5ZTYyN2FkMjE1M2RkZmNhNDljNzc4ZTBjNzljODNjYS4uNzhkYTZkYzNmNGVhZWFkM2M4MDBh
ZTQyZWMwZTY4ODE3NjVlNDZlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKQEAgLTM1NywyMCArMzU3LDIwIEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBXZWJBc3NlbWJseUZ1bmN0aW9uOjpq
c0NhbGxFbnRyeXBvaW50U2xvdygpCiAKICAgICBpZiAoISFtb2R1bGVJbmZvcm1hdGlvbi5tZW1v
cnkpIHsKICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQ
b2ludGVyOwotICAgICAgICBHUFJSZWcgc2NyYXRjaE9yU2l6ZSA9IHN0YWNrTGltaXRHUFI7Cisg
ICAgICAgIEdQUlJlZyBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUgPSBzdGFja0xpbWl0R1BS
OwogICAgICAgICBhdXRvIG1vZGUgPSBpbnN0YW5jZSgpLT5tZW1vcnlNb2RlKCk7CiAKICAgICAg
ICAgaWYgKGlzQVJNNjRFKCkpIHsKICAgICAgICAgICAgIGlmIChtb2RlICE9IFdhc206Ok1lbW9y
eU1vZGU6OlNpZ25hbGluZykKLSAgICAgICAgICAgICAgICBzY3JhdGNoT3JTaXplID0gcGlubmVk
UmVncy5zaXplUmVnaXN0ZXI7Ci0gICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc2NyYXRjaEdQUiwgV2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5
U2l6ZSgpKSwgc2NyYXRjaE9yU2l6ZSk7CisgICAgICAgICAgICAgICAgc2NyYXRjaE9yQm91bmRz
Q2hlY2tpbmdTaXplID0gcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlcjsKKyAg
ICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBX
YXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSksIHNjcmF0
Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBp
ZiAobW9kZSAhPSBXYXNtOjpNZW1vcnlNb2RlOjpTaWduYWxpbmcpCi0gICAgICAgICAgICAgICAg
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFdhc206Okluc3Rh
bmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVy
KTsKKyAgICAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2Ny
YXRjaEdQUiwgV2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXpl
KCkpLCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsKICAgICAgICAgfQog
CiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBX
YXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnkoKSksIGJhc2VNZW1vcnkpOwotICAg
ICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9y
eSwgc2NyYXRjaE9yU2l6ZSwgc2NyYXRjaE9yU2l6ZSk7CisgICAgICAgIGppdC5jYWdlQ29uZGl0
aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBzY3JhdGNoT3JCb3VuZHND
aGVja2luZ1NpemUsIHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSk7CiAgICAgfQogCiAgICAg
Ly8gV2UgdXNlIHRoaXMgY2FsbGVlIHRvIGluZGljYXRlIGhvdyB0byB1bndpbmQgcGFzdCB0aGVz
ZSB0eXBlcyBvZiBmcmFtZXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwCmluZGV4IDUwY2Nj
YTI0MWZkNWJlOTc5NTZkZjA4OGI5NGE4ZDhhYjBmZjBkMDUuLjI1NmViMGZmYzM0YWI3MzViYzUz
Mjg3Yzc1ZjZiMDdlYzZiOGY3Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwCkBAIC01
Niw4ICs1Niw2IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RKU1dlYkFzc2Vt
Ymx5TWVtb3J5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSAhPSAxKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIldlYkFzc2VtYmx5Lk1lbW9y
eSBleHBlY3RzIGV4YWN0bHkgb25lIGFyZ3VtZW50Il9zKSkpOwogCiAgICAgSlNPYmplY3QqIG1l
bW9yeURlc2NyaXB0b3I7CiAgICAgewpAQCAtMTAyLDEwICsxMDAsMjMgQEAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlNZW1vcnksIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2IKICAgICAgICAgfQogICAgIH0KIAorICAgIFdhc206Ok1lbW9yeVNoYXJpbmdN
b2RlIHNoYXJpbmdNb2RlID0gV2FzbTo6TWVtb3J5U2hhcmluZ01vZGU6OkRlZmF1bHQ7CisgICAg
SlNWYWx1ZSBzaGFyZWRWYWx1ZSA9IG1lbW9yeURlc2NyaXB0b3ItPmdldChnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaGFyZWQiKSk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBib29sIHNoYXJlZCA9
IHNoYXJlZFZhbHVlLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgaWYgKHNoYXJlZCkgewor
ICAgICAgICBpZiAoIW1heGltdW1QYWdlQ291bnQpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICInbWF4aW11bScgcGFnZSBjb3Vu
dCBtdXN0IGJlIGRlZmluZWQgaWYgJ3NoYXJlZCcgaXMgdHJ1ZSJfcyk7CisgICAgICAgIGlmICgh
T3B0aW9uczo6dXNlU2hhcmVkQXJyYXlCdWZmZXIoKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIlNoYXJlZCBXZWJBc3NlbWJs
eS5NZW1vcnkgYW5kIFNoYXJlZEFycmF5QnVmZmVyIGFyZSBub3QgZW5hYmxlZCJfcyk7CisgICAg
ICAgIHNoYXJpbmdNb2RlID0gV2FzbTo6TWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZDsKKyAgICB9
CisKICAgICBhdXRvKiBqc01lbW9yeSA9IEpTV2ViQXNzZW1ibHlNZW1vcnk6OnRyeUNyZWF0ZShn
bG9iYWxPYmplY3QsIHZtLCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5TWVtb3J5U3RydWN0dXJl
KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKLSAgICBSZWZQdHI8V2FzbTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OnRy
eUNyZWF0ZShpbml0aWFsUGFnZUNvdW50LCBtYXhpbXVtUGFnZUNvdW50LAorICAgIFJlZlB0cjxX
YXNtOjpNZW1vcnk+IG1lbW9yeSA9IFdhc206Ok1lbW9yeTo6dHJ5Q3JlYXRlKGluaXRpYWxQYWdl
Q291bnQsIG1heGltdW1QYWdlQ291bnQsIHNoYXJpbmdNb2RlLAogICAgICAgICBbJnZtXSAoV2Fz
bTo6TWVtb3J5OjpOb3RpZnlQcmVzc3VyZSkgeyB2bS5oZWFwLmNvbGxlY3RBc3luYyhDb2xsZWN0
aW9uU2NvcGU6OkZ1bGwpOyB9LAogICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpTeW5jVHJ5
VG9SZWNsYWltKSB7IHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsg
fSwKICAgICAgICAgWyZ2bSwganNNZW1vcnldIChXYXNtOjpNZW1vcnk6Okdyb3dTdWNjZXNzLCBX
YXNtOjpQYWdlQ291bnQgb2xkUGFnZUNvdW50LCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50
KSB7IGpzTWVtb3J5LT5ncm93U3VjY2Vzc0NhbGxiYWNrKHZtLCBvbGRQYWdlQ291bnQsIG5ld1Bh
Z2VDb3VudCk7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCmluZGV4IGFiNGEyYmZlZWVmYTY4
NDE3YzM4Y2MxOTU0ZTVlOTdmNjJmNjAwOWIuLjdlMjA4YzMxMDFjMjM3MTYzMjI5Y2M1NzkyN2Fl
YTZiOGYwYjI1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVy
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2IKIAogICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkqIG1lbW9y
eSA9IGdldE1lbW9yeShnbG9iYWxPYmplY3QsIHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsg
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUobWVtb3J5LT5idWZmZXIoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxP
YmplY3QpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKG1lbW9yeS0+YnVmZmVyKGdsb2JhbE9iamVjdCkpKTsKIH0KIAogV2ViQXNzZW1ibHlNZW1v
cnlQcm90b3R5cGUqIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmlu
ZGV4IDMxYzIxZTNjNDM3MDJjOTlmYjZmODA5NTRkMGM1ZTQ3N2Q3MGRmN2QuLjlkZDJlN2JmNTIx
ODdmYjM0NWVlZjBlN2Y0ZmEyNjM0NWIyZWE0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTU2
Niw4ICs1NjYsOSBAQCBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIH07CiAKICAgICBhdXRvIGZvckVhY2hT
ZWdtZW50ID0gWyZdIChhdXRvIGZuKSB7Ci0gICAgICAgIHVpbnQ4X3QqIG1lbW9yeSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG1faW5zdGFuY2UtPmluc3RhbmNlKCkuY2FjaGVkTWVtb3J5
KCkpOwotICAgICAgICB1aW50NjRfdCBzaXplSW5CeXRlcyA9IG1faW5zdGFuY2UtPmluc3RhbmNl
KCkuY2FjaGVkTWVtb3J5U2l6ZSgpOworICAgICAgICBhdXRvIHdhc21NZW1vcnkgPSBtX2luc3Rh
bmNlLT5pbnN0YW5jZSgpLm1lbW9yeSgpOworICAgICAgICB1aW50OF90KiBtZW1vcnkgPSByZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QqPih3YXNtTWVtb3J5LT5tZW1vcnkoKSk7CisgICAgICAgIHVp
bnQ2NF90IHNpemVJbkJ5dGVzID0gd2FzbU1lbW9yeS0+c2l6ZSgpOwogCiAgICAgICAgIGZvciAo
Y29uc3QgV2FzbTo6U2VnbWVudDo6UHRyJiBzZWdtZW50IDogZGF0YSkgewogICAgICAgICAgICAg
dWludDMyX3Qgb2Zmc2V0ID0gc2VnbWVudC0+b2Zmc2V0LmlzR2xvYmFsSW1wb3J0KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CmluZGV4IDJkOTliZTY0MTNjMzBjMTQwOGY1MzZiYzE4YTIxZWM4NDFhOTc3NjMuLmQ4Y2NmNGNj
NmIyZmVlZmMyZjRkMDczNGRmYjFiZDU0NGYxNzllYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtNzUsNiArNzUs
NyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU2V0Lmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNTZXRJdGVyYXRvci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTVHlw
ZWRBcnJheXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1dlYkFzc2VtYmx5TWVtb3J5
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNXZWJBc3NlbWJseU1vZHVsZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KQEAgLTE4Miw2ICsxODMsOSBAQCBlbnVt
IFNlcmlhbGl6YXRpb25UYWcgewogI2VuZGlmCiAgICAgQmlnSW50VGFnID0gNDcsCiAgICAgQmln
SW50T2JqZWN0VGFnID0gNDgsCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIFdhc21NZW1v
cnlUYWcgPSA0OSwKKyNlbmRpZgogICAgIEVycm9yVGFnID0gMjU1CiB9OwogCkBAIC0zNTcsNyAr
MzYxLDYgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cmluZ0RhdGFJczhCaXRGbGFnID0gMHg4
MDAwMDAwMDsKICAqICAgIHwgTWVzc2FnZVBvcnRSZWZlcmVuY2VUYWcgPHZhbHVlOnVpbnQzMl90
PgogICogICAgfCBBcnJheUJ1ZmZlcgogICogICAgfCBBcnJheUJ1ZmZlclZpZXdUYWcgQXJyYXlC
dWZmZXJWaWV3U3VidGFnIDxieXRlT2Zmc2V0OnVpbnQzMl90PiA8Ynl0ZUxlbmd0aDp1aW50MzJf
dD4gKEFycmF5QnVmZmVyIHwgT2JqZWN0UmVmZXJlbmNlKQotICogICAgfCBBcnJheUJ1ZmZlclRy
YW5zZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KICAqICAgIHwgQ3J5cHRvS2V5VGFnIDx3cmFwcGVk
S2V5TGVuZ3RoOnVpbnQzMl90PiA8ZmFjdG9yOmJ5dGV7d3JhcHBlZEtleUxlbmd0aH0+CiAgKiAg
ICB8IERPTVBvaW50CiAgKiAgICB8IERPTVJlY3QKQEAgLTM2Nyw2ICszNzAsNyBAQCBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RyaW5nRGF0YUlzOEJpdEZsYWcgPSAweDgwMDAwMDAwOwogICogICAg
fCBSVENDZXJ0aWZpY2F0ZVRhZwogICogICAgfCBJbWFnZUJpdG1hcFRhZyA8b3JpZ2luQ2xlYW46
dWludDhfdD4gPGxvZ2ljYWxXaWR0aDppbnQzMl90PiA8bG9naWNhbEhlaWdodDppbnQzMl90PiA8
cmVzb2x1dGlvblNjYWxlOmRvdWJsZT4gPGJ5dGVMZW5ndGg6dWludDMyX3Q+KDxpbWFnZUJ5dGVE
YXRhOnVpbnQ4X3Q+KQogICogICAgfCBPZmZzY3JlZW5DYW52YXNUcmFuc2ZlclRhZyA8dmFsdWU6
dWludDMyX3Q+CisgKiAgICB8IFdhc21NZW1vcnlUYWcgPHZhbHVlOnVpbnQzMl90PgogICoKICAq
IEluc2lkZSBjZXJ0aWZpY2F0ZSwgZGF0YSBpcyBzZXJpYWxpemVkIGluIHRoaXMgZm9ybWF0IGFz
IHBlciBzcGVjOgogICoKQEAgLTQxOSw2ICs0MjMsOCBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RyaW5nRGF0YUlzOEJpdEZsYWcgPSAweDgwMDAwMDAwOwogICoKICAqIEFycmF5QnVmZmVyIDot
CiAgKiAgICBBcnJheUJ1ZmZlclRhZyA8bGVuZ3RoOnVpbnQzMl90PiA8Y29udGVudHM6Ynl0ZXts
ZW5ndGh9PgorICogICAgQXJyYXlCdWZmZXJUcmFuc2ZlclRhZyA8dmFsdWU6dWludDMyX3Q+Cisg
KiAgICBTaGFyZWRBcnJheUJ1ZmZlclRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKgogICogQ3J5cHRv
S2V5SE1BQyA6LQogICogICAgPGtleVNpemU6dWludDMyX3Q+IDxrZXlEYXRhOmJ5dGV7a2V5U2l6
ZX0+IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXJUYWcgLy8gQWxnb3JpdGhtIHRhZyBpbm5lciBo
YXNoIGZ1bmN0aW9uLgpAQCAtNTc2LDYgKzU4Miw3IEBAIGNsYXNzIENsb25lU2VyaWFsaXplciA6
IENsb25lQmFzZSB7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAg
ICBXYXNtTW9kdWxlQXJyYXkmIHdhc21Nb2R1bGVzLAorICAgICAgICAgICAgV2FzbU1lbW9yeUhh
bmRsZUFycmF5JiB3YXNtTWVtb3J5SGFuZGxlcywKICNlbmRpZgogICAgICAgICBWZWN0b3I8U3Ry
aW5nPiYgYmxvYlVSTHMsIFZlY3Rvcjx1aW50OF90PiYgb3V0LCBTZXJpYWxpemF0aW9uQ29udGV4
dCBjb250ZXh0LCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkmIHNoYXJlZEJ1ZmZlcnMpCiAgICAg
ewpAQCAtNTg1LDYgKzU5Miw3IEBAIGNsYXNzIENsb25lU2VyaWFsaXplciA6IENsb25lQmFzZSB7
CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICB3YXNtTW9kdWxl
cywKKyAgICAgICAgICAgIHdhc21NZW1vcnlIYW5kbGVzLAogI2VuZGlmCiAgICAgICAgICAgICBi
bG9iVVJMcywgb3V0LCBjb250ZXh0LCBzaGFyZWRCdWZmZXJzKTsKICAgICAgICAgcmV0dXJuIHNl
cmlhbGl6ZXIuc2VyaWFsaXplKHZhbHVlKTsKQEAgLTYxNSw2ICs2MjMsNyBAQCBjbGFzcyBDbG9u
ZVNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogICAgICAgICAgICAgV2FzbU1vZHVsZUFycmF5JiB3YXNtTW9kdWxlcywKKyAgICAgICAgICAg
IFdhc21NZW1vcnlIYW5kbGVBcnJheSYgd2FzbU1lbW9yeUhhbmRsZXMsCiAjZW5kaWYKICAgICAg
ICAgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBWZWN0b3I8dWludDhfdD4mIG91dCwgU2VyaWFs
aXphdGlvbkNvbnRleHQgY29udGV4dCwgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5JiBzaGFyZWRC
dWZmZXJzKQogICAgICAgICA6IENsb25lQmFzZShsZXhpY2FsR2xvYmFsT2JqZWN0KQpAQCAtNjI1
LDYgKzYzNCw3IEBAIGNsYXNzIENsb25lU2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAgICAgICAg
ICwgbV9zaGFyZWRCdWZmZXJzKHNoYXJlZEJ1ZmZlcnMpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogICAgICAgICAsIG1fd2FzbU1vZHVsZXMod2FzbU1vZHVsZXMpCisgICAgICAgICwgbV93YXNt
TWVtb3J5SGFuZGxlcyh3YXNtTWVtb3J5SGFuZGxlcykKICNlbmRpZgogICAgIHsKICAgICAgICAg
d3JpdGUoQ3VycmVudFZlcnNpb24pOwpAQCAtMTIzMCw2ICsxMjQwLDcgQEAgY2xhc3MgQ2xvbmVT
ZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXI+PiBkdW1teUFycmF5QnVmZmVyczsKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCiAgICAgICAgICAgICAgICAgV2FzbU1vZHVsZUFycmF5IGR1bW15TW9kdWxlczsKKyAgICAg
ICAgICAgICAgICBXYXNtTWVtb3J5SGFuZGxlQXJyYXkgZHVtbXlNZW1vcnlIYW5kbGVzOwogI2Vu
ZGlmCiAgICAgICAgICAgICAgICAgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5IGR1bW15U2hhcmVk
QnVmZmVyczsKICAgICAgICAgICAgICAgICBDbG9uZVNlcmlhbGl6ZXIgcmF3S2V5U2VyaWFsaXpl
cihtX2xleGljYWxHbG9iYWxPYmplY3QsIGR1bW15TWVzc2FnZVBvcnRzLCBkdW1teUFycmF5QnVm
ZmVycywgeyB9LApAQCAtMTIzOCw2ICsxMjQ5LDcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDog
Q2xvbmVCYXNlIHsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgICAg
ICAgICAgICAgZHVtbXlNb2R1bGVzLAorICAgICAgICAgICAgICAgICAgICBkdW1teU1lbW9yeUhh
bmRsZXMsCiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgZHVtbXlCbG9iVVJMcywgc2VyaWFs
aXplZEtleSwgU2VyaWFsaXphdGlvbkNvbnRleHQ6OkRlZmF1bHQsIGR1bW15U2hhcmVkQnVmZmVy
cyk7CiAgICAgICAgICAgICAgICAgcmF3S2V5U2VyaWFsaXplci53cml0ZShrZXkpOwpAQCAtMTI3
NCw2ICsxMjg2LDE3IEBAIGNsYXNzIENsb25lU2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAgICAg
ICAgICAgICAgICAgd3JpdGUoaW5kZXgpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKEpTV2ViQXNzZW1ibHlNZW1vcnkqIG1lbW9y
eSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1lbW9yeSo+KHZtLCBvYmopKSB7CisgICAg
ICAgICAgICAgICAgaWYgKG1lbW9yeS0+bWVtb3J5KCkuc2hhcmluZ01vZGUoKSAhPSBKU0M6Oldh
c206Ok1lbW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgY29k
ZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpEYXRhQ2xvbmVFcnJvcjsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHVpbnQzMl90IGluZGV4ID0gbV93YXNtTWVtb3J5SGFuZGxlcy5zaXplKCk7CisgICAgICAgICAg
ICAgICAgbV93YXNtTWVtb3J5SGFuZGxlcy5hcHBlbmQobWFrZVJlZihtZW1vcnktPm1lbW9yeSgp
LmhhbmRsZSgpKSk7CisgICAgICAgICAgICAgICAgd3JpdGUoV2FzbU1lbW9yeVRhZyk7CisgICAg
ICAgICAgICAgICAgd3JpdGUoaW5kZXgpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgICAgICBpZiAob2JqLT5pbmhlcml0czxKU0RP
TVBvaW50UmVhZE9ubHk+KHZtKSkgewogICAgICAgICAgICAgICAgIGR1bXBET01Qb2ludChvYmop
OwpAQCAtMTY1OCw2ICsxNjgxLDcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNl
IHsKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkmIG1fc2hhcmVkQnVmZmVyczsKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV2FzbU1vZHVsZUFycmF5JiBtX3dhc21Nb2R1bGVzOwor
ICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSYgbV93YXNtTWVtb3J5SGFuZGxlczsKICNlbmRpZgog
fTsKIApAQCAtMTkzNyw2ICsxOTYxLDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9u
ZUJhc2UgewogICAgICAgICAsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogYXJyYXlCdWZmZXJD
b250ZW50c0FycmF5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJsb2JVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiBibG9iRmlsZVBhdGhzLCBB
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIHNoYXJlZEJ1ZmZlcnMKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAgICAgICAgICwgV2FzbU1vZHVsZUFycmF5KiB3YXNtTW9kdWxlcworICAgICAgICAs
IFdhc21NZW1vcnlIYW5kbGVBcnJheSogd2FzbU1lbW9yeUhhbmRsZXMKICNlbmRpZgogICAgICAg
ICApCiAgICAgewpAQCAtMTk0OCw2ICsxOTczLDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIg
OiBDbG9uZUJhc2UgewogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAg
ICAgLCB3YXNtTW9kdWxlcworICAgICAgICAgICAgLCB3YXNtTWVtb3J5SGFuZGxlcwogI2VuZGlm
CiAgICAgICAgICAgICApOwogICAgICAgICBpZiAoIWRlc2VyaWFsaXplci5pc1ZhbGlkKCkpCkBA
IC0yMDAxLDYgKzIwMjcsNyBAQCBjbGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENsb25lQmFzZSB7
CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgV2FzbU1vZHVsZUFy
cmF5KiB3YXNtTW9kdWxlcyA9IG51bGxwdHIKKyAgICAgICAgLCBXYXNtTWVtb3J5SGFuZGxlQXJy
YXkqIHdhc21NZW1vcnlIYW5kbGVzID0gbnVsbHB0cgogI2VuZGlmCiAgICAgICAgICkKICAgICAg
ICAgOiBDbG9uZUJhc2UobGV4aWNhbEdsb2JhbE9iamVjdCkKQEAgLTIwMjEsNiArMjA0OCw3IEBA
IGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICNlbmRpZgogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBtX3dhc21Nb2R1bGVzKHdhc21Nb2R1bGVzKQorICAg
ICAgICAsIG1fd2FzbU1lbW9yeUhhbmRsZXMod2FzbU1lbW9yeUhhbmRsZXMpCiAjZW5kaWYKICAg
ICB7CiAgICAgICAgIGlmICghcmVhZChtX3ZlcnNpb24pKQpAQCAtMjAzMyw2ICsyMDYxLDcgQEAg
Y2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogI2VuZGlmCiAjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQogICAgICAgICAsIFdhc21Nb2R1bGVBcnJheSogd2FzbU1vZHVsZXMKKyAg
ICAgICAgLCBXYXNtTWVtb3J5SGFuZGxlQXJyYXkqIHdhc21NZW1vcnlIYW5kbGVzCiAjZW5kaWYK
ICAgICAgICAgKQogICAgICAgICA6IENsb25lQmFzZShsZXhpY2FsR2xvYmFsT2JqZWN0KQpAQCAt
MjA1Niw2ICsyMDg1LDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2Ugewog
I2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAsIG1fd2FzbU1vZHVsZXMo
d2FzbU1vZHVsZXMpCisgICAgICAgICwgbV93YXNtTWVtb3J5SGFuZGxlcyh3YXNtTWVtb3J5SGFu
ZGxlcykKICNlbmRpZgogICAgIHsKICAgICAgICAgaWYgKCFyZWFkKG1fdmVyc2lvbikpCkBAIC0z
Mjk5LDYgKzMzMjksMzMgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2Ugewog
ICAgICAgICAgICAgbV9nY0J1ZmZlci5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93KHJlc3VsdCk7
CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CisgICAgICAgIGNhc2UgV2Fz
bU1lbW9yeVRhZzogeworICAgICAgICAgICAgdWludDMyX3QgaW5kZXg7CisgICAgICAgICAgICBi
b29sIGluZGV4U3VjY2Vzc2Z1bGx5UmVhZCA9IHJlYWQoaW5kZXgpOworICAgICAgICAgICAgaWYg
KCFpbmRleFN1Y2Nlc3NmdWxseVJlYWQgfHwgIW1fd2FzbU1lbW9yeUhhbmRsZXMgfHwgaW5kZXgg
Pj0gbV93YXNtTWVtb3J5SGFuZGxlcy0+c2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgZmFpbCgp
OworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBSZWZQdHI8V2FzbTo6TWVtb3J5SGFuZGxlPiBoYW5kbGUgPSBtX3dhc21NZW1vcnlI
YW5kbGVzLT5hdChpbmRleCk7CisgICAgICAgICAgICBpZiAoIWhhbmRsZSkgeworICAgICAgICAg
ICAgICAgIGZhaWwoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYXV0byYgdm0gPSBtX2xleGljYWxHbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgICAgICAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiByZXN1bHQgPSBKU0M6OkpTV2ViQXNzZW1i
bHlNZW1vcnk6OnRyeUNyZWF0ZShtX2xleGljYWxHbG9iYWxPYmplY3QsIHZtLCBtX2dsb2JhbE9i
amVjdC0+d2ViQXNzZW1ibHlNZW1vcnlTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAvLyBTaW5j
ZSB3ZSBhcmUgY2xvbmluZyBhIEpTV2ViQXNzZW1ibHlNZW1vcnksIGl0J3MgaW1wb3NzaWJsZSBm
b3IgdGhhdAorICAgICAgICAgICAgLy8gbW9kdWxlIHRvIG5vdCBoYXZlIGJlZW4gYSB2YWxpZCBt
b2R1bGUuIFRoZXJlZm9yZSwgY3JlYXRlU3R1YiBzaG91bGQKKyAgICAgICAgICAgIC8vIG5vdCB0
cm93LgorICAgICAgICAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAg
ICAgICAgICBSZWY8V2FzbTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OmNyZWF0ZSho
YW5kbGUucmVsZWFzZU5vbk51bGwoKSwKKyAgICAgICAgICAgICAgICBbJnZtXSAoV2FzbTo6TWVt
b3J5OjpOb3RpZnlQcmVzc3VyZSkgeyB2bS5oZWFwLmNvbGxlY3RBc3luYyhDb2xsZWN0aW9uU2Nv
cGU6OkZ1bGwpOyB9LAorICAgICAgICAgICAgICAgIFsmdm1dIChXYXNtOjpNZW1vcnk6OlN5bmNU
cnlUb1JlY2xhaW0pIHsgdm0uaGVhcC5jb2xsZWN0U3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1bGwp
OyB9LAorICAgICAgICAgICAgICAgIFsmdm0sIHJlc3VsdF0gKFdhc206Ok1lbW9yeTo6R3Jvd1N1
Y2Nlc3MsIFdhc206OlBhZ2VDb3VudCBvbGRQYWdlQ291bnQsIFdhc206OlBhZ2VDb3VudCBuZXdQ
YWdlQ291bnQpIHsgcmVzdWx0LT5ncm93U3VjY2Vzc0NhbGxiYWNrKHZtLCBvbGRQYWdlQ291bnQs
IG5ld1BhZ2VDb3VudCk7IH0pOworICAgICAgICAgICAgcmVzdWx0LT5hZG9wdChXVEZNb3ZlKG1l
bW9yeSkpOworICAgICAgICAgICAgbV9nY0J1ZmZlci5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93
KHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CiAjZW5kaWYK
ICAgICAgICAgY2FzZSBBcnJheUJ1ZmZlclRhZzogewogICAgICAgICAgICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBhcnJheUJ1ZmZlcjsKQEAgLTM0MzksNiArMzQ5Niw3IEBAIGNsYXNzIENsb25lRGVz
ZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICAgICBXYXNtTW9kdWxlQXJyYXkqIG1fd2FzbU1vZHVsZXM7CisgICAgV2FzbU1lbW9yeUhhbmRs
ZUFycmF5KiBtX3dhc21NZW1vcnlIYW5kbGVzOwogI2VuZGlmCiAKICAgICBTdHJpbmcgYmxvYkZp
bGVQYXRoRm9yQmxvYlVSTChjb25zdCBTdHJpbmcmIGJsb2JVUkwpCkBAIC0zNjYxLDYgKzM3MTks
NyBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8
dWludDhfdD4mJiBidWZmZXIsIGNvbnN0IFZlYwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogICAgICAgICAsIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTW9kdWxlQXJyYXk+IHdhc21Nb2R1
bGVzQXJyYXkKKyAgICAgICAgLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1lbW9yeUhhbmRsZUFycmF5
PiB3YXNtTWVtb3J5SGFuZGxlc0FycmF5CiAjZW5kaWYKICAgICAgICAgKQogICAgIDogbV9kYXRh
KFdURk1vdmUoYnVmZmVyKSkKQEAgLTM2NzIsNiArMzczMSw3IEBAIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgY29u
c3QgVmVjCiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgLCBtX3dhc21Nb2R1
bGVzQXJyYXkoV1RGTW92ZSh3YXNtTW9kdWxlc0FycmF5KSkKKyAgICAsIG1fd2FzbU1lbW9yeUhh
bmRsZXNBcnJheShXVEZNb3ZlKHdhc21NZW1vcnlIYW5kbGVzQXJyYXkpKQogI2VuZGlmCiB7CiAg
ICAgLy8gU2luY2UgdGhpcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgaXMgbWVhbnQgdG8gYmUgcGFz
c2VkIGJldHdlZW4gdGhyZWFkcywgaXRzIFN0cmluZyBkYXRhIG1lbWJlcnMKQEAgLTM3MTAsNiAr
Mzc3MCwxMCBAQCBzaXplX3QgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjb21wdXRlTWVtb3J5Q29z
dCgpIGNvbnN0CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgLy8gV2UgYXJlIG5vdCBz
dXBwb3J0aW5nIFdlYkFzc2VtYmx5IE1vZHVsZSBtZW1vcnkgZXN0aW1hdGlvbiB5ZXQuCisgICAg
aWYgKG1fd2FzbU1lbW9yeUhhbmRsZXNBcnJheSkgeworICAgICAgICBmb3IgKGF1dG8mIGNvbnRl
bnQgOiAqbV93YXNtTWVtb3J5SGFuZGxlc0FycmF5KQorICAgICAgICAgICAgY29zdCArPSBjb250
ZW50LT5zaXplKCk7CisgICAgfQogI2VuZGlmCiAKICAgICBmb3IgKGF1dG8mIHVybHMgOiBtX2Js
b2JVUkxzKQpAQCAtMzgwMCw2ICszODY0LDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QmIGxleGkKICAg
ICBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBkdW1teUFycmF5QnVmZmVyczsKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV2FzbU1vZHVsZUFycmF5IGR1bW15TW9kdWxlczsK
KyAgICBXYXNtTWVtb3J5SGFuZGxlQXJyYXkgZHVtbXlNZW1vcnlIYW5kbGVzOwogI2VuZGlmCiAg
ICAgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5IGR1bW15U2hhcmVkQnVmZmVyczsKICAgICBhdXRv
IGNvZGUgPSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUsIGR1bW15TWVzc2FnZVBvcnRzLCBkdW1teUFycmF5QnVmZmVycywgZHVtbXlJbWFnZUJp
dG1hcHMsCkBAIC0zODA4LDExICszODczLDEzIEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0JiBsZXhpCiAj
ZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIGR1bW15TW9kdWxlcywKKyAg
ICAgICAgZHVtbXlNZW1vcnlIYW5kbGVzLAogI2VuZGlmCiAgICAgICAgIGJsb2JVUkxzLCBidWZm
ZXIsIFNlcmlhbGl6YXRpb25Db250ZXh0OjpEZWZhdWx0LCBkdW1teVNoYXJlZEJ1ZmZlcnMpOwog
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZHVtbXlN
b2R1bGVzLmlzRW1wdHkoKSwgIldhc206Ok1vZHVsZSBzZXJpYWxpemF0aW9uIGlzIG9ubHkgYWxs
b3dlZCBpbiB0aGUgcG9zdE1lc3NhZ2UgY29udGV4dCIpOworICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoZHVtbXlNZW1vcnlIYW5kbGVzLmlzRW1wdHkoKSwgIldhc206Ok1lbW9yeSBzZXJpYWxpemF0
aW9uIGlzIG9ubHkgYWxsb3dlZCBpbiB0aGUgcG9zdE1lc3NhZ2UgY29udGV4dCIpOwogI2VuZGlm
CiAKICAgICBpZiAodGhyb3dFeGNlcHRpb25zID09IFNlcmlhbGl6YXRpb25FcnJvck1vZGU6OlRo
cm93aW5nKQpAQCAtMzg1OSw3ICszOTI2LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICNl
bmRpZgogICAgIGZvciAoYXV0byYgdHJhbnNmZXJhYmxlIDogdHJhbnNmZXJMaXN0KSB7CiAgICAg
ICAgIGlmIChhdXRvIGFycmF5QnVmZmVyID0gdG9Qb3NzaWJseVNoYXJlZEFycmF5QnVmZmVyKHZt
LCB0cmFuc2ZlcmFibGUuZ2V0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXJyYXlCdWZmZXItPmlz
RGV0YWNoZWQoKSkKKyAgICAgICAgICAgIGlmIChhcnJheUJ1ZmZlci0+aXNEZXRhY2hlZCgpIHx8
IGFycmF5QnVmZmVyLT5pc1NoYXJlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBEYXRhQ2xvbmVFcnJvciB9OwogICAgICAgICAgICAgaWYgKGFycmF5QnVmZmVyLT5pc0xv
Y2tlZCgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwpAQCAtMzkwNCw2ICszOTcxLDcgQEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICAg
ICBWZWN0b3I8U3RyaW5nPiBibG9iVVJMczsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAg
V2FzbU1vZHVsZUFycmF5IHdhc21Nb2R1bGVzOworICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSB3
YXNtTWVtb3J5SGFuZGxlczsKICNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXk+IHNoYXJlZEJ1ZmZlcnMgPSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29u
dGVudHNBcnJheT4oKTsKICAgICBhdXRvIGNvZGUgPSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6
ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJz
LCBpbWFnZUJpdG1hcHMsCkBAIC0zOTExLDcgKzM5NzksOCBAQCBFeGNlcHRpb25PcjxSZWY8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9i
YWxPYgogICAgICAgICBvZmZzY3JlZW5DYW52YXNlcywKICNlbmRpZgogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKLSAgICAgICAgd2FzbU1vZHVsZXMsIAorICAgICAgICB3YXNtTW9kdWxlcywKKyAg
ICAgICAgd2FzbU1lbW9yeUhhbmRsZXMsCiAjZW5kaWYKICAgICAgICAgYmxvYlVSTHMsIGJ1ZmZl
ciwgY29udGV4dCwgKnNoYXJlZEJ1ZmZlcnMpOwogCkBAIC0zOTM2LDYgKzQwMDUsNyBAQCBFeGNl
cHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGUoSlNHbG9iYWxPYgogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAg
ICAgICAgICAgICAgICwgbWFrZVVuaXF1ZTxXYXNtTW9kdWxlQXJyYXk+KHdhc21Nb2R1bGVzKQor
ICAgICAgICAgICAgICAgICwgbWFrZVVuaXF1ZTxXYXNtTWVtb3J5SGFuZGxlQXJyYXk+KHdhc21N
ZW1vcnlIYW5kbGVzKQogI2VuZGlmCiAgICAgICAgICAgICAgICAgKSk7CiB9CkBAIC0zOTkzLDYg
KzQwNjMsNyBAQCBKU1ZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsCiAgICAgICAgICwgbV9hcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXkuZ2V0KCksIG1fZGF0YSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMsIG1f
c2hhcmVkQnVmZmVyQ29udGVudHNBcnJheS5nZXQoKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICAgICAgICAgLCBtX3dhc21Nb2R1bGVzQXJyYXkuZ2V0KCkKKyAgICAgICAgLCBtX3dhc21NZW1v
cnlIYW5kbGVzQXJyYXkuZ2V0KCkKICNlbmRpZgogICAgICAgICApOwogICAgIGlmICh0aHJvd0V4
Y2VwdGlvbnMgPT0gU2VyaWFsaXphdGlvbkVycm9yTW9kZTo6VGhyb3dpbmcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGQy
YTBjNGEwYjgzZGFlODkyZGI3OTUwNmVkMzE2ZGViMzhhMTY1MGQuLjBjZGI0MDE4Yzg0N2ZhMDBm
ZWQ3ZjVmYjBmY2JjYTM1Mzk4MzUyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC00MSw2ICs0MSw3IEBAIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IE9wYXF1ZUpTVmFsdWUqIEpTVmFsdWVSZWY7CiAjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIGNsYXNzIE1vZHVsZTsK
K2NsYXNzIE1lbW9yeUhhbmRsZTsKIH0gfQogI2VuZGlmCiAKQEAgLTYxLDYgKzYyLDcgQEAgZW51
bSBjbGFzcyBTZXJpYWxpemF0aW9uQ29udGV4dCB7IERlZmF1bHQsIFdvcmtlclBvc3RNZXNzYWdl
LCBXaW5kb3dQb3N0TWVzc2FnZQogdXNpbmcgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5ID0gVmVj
dG9yPEpTQzo6QXJyYXlCdWZmZXJDb250ZW50cz47CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
dXNpbmcgV2FzbU1vZHVsZUFycmF5ID0gVmVjdG9yPFJlZlB0cjxKU0M6Oldhc206Ok1vZHVsZT4+
OwordXNpbmcgV2FzbU1lbW9yeUhhbmRsZUFycmF5ID0gVmVjdG9yPFJlZlB0cjxKU0M6Oldhc206
Ok1lbW9yeUhhbmRsZT4+OwogI2VuZGlmCiAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9J
REVOVElGSUVSKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CkBAIC0xMjIsNiArMTI0LDcgQEAgY2xh
c3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4KICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAg
ICAgICAgLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1vZHVsZUFycmF5PiA9IG51bGxwdHIKKyAgICAg
ICAgLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1lbW9yeUhhbmRsZUFycmF5PiA9IG51bGxwdHIKICNl
bmRpZgogICAgICAgICApOwogCkBAIC0xMzYsNiArMTM5LDcgQEAgY2xhc3MgU2VyaWFsaXplZFNj
cmlwdFZhbHVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4KICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2FzbU1vZHVsZUFycmF5PiBtX3dhc21Nb2R1bGVzQXJyYXk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFdhc21NZW1vcnlIYW5kbGVBcnJheT4gbV93YXNtTWVtb3J5SGFuZGxlc0FycmF5OwogI2Vu
ZGlmCiAgICAgVmVjdG9yPFN0cmluZz4gbV9ibG9iVVJMczsKICAgICBzaXplX3QgbV9tZW1vcnlD
b3N0IHsgMCB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggYzViZWU1NmE5MmI0
ODdiZDQxOGM4M2ZmMDA1OGY5ZjQ3N2M1Mjg1Mi4uNDdlOTU0ZDcwYTZhYzI2Zjc4MDZkY2YwODk3
Yjg2MDAxZjZjNzllOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMjAtMTEtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbSlNDXSBJbXBsZW1lbnQgV2ViQXNzZW1ibHkuTWVtb3J5IHdpdGggc2hhcmVkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg2OTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5hbnktZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1
Y3Rvci5hbnkud29ya2VyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvd2FzbS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9ncm93LmFueS53b3JrZXItZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8t
YXBpL3RoZS1hdWRpb2J1ZmZlci1pbnRlcmZhY2UvYXVkaW9idWZmZXItY29weS1jaGFubmVsLWV4
cGVjdGVkLnR4dDoKKwogMjAyMC0xMS0xMiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtMRkNdW0ludGVncmF0aW9uXSBFbmFibGUgaW5saW5lIHJlcGxhY2VkIHN1
cHBvcnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvY29uc3RydWN0b3IuYW55LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1v
cnkvY29uc3RydWN0b3IuYW55LWV4cGVjdGVkLnR4dAppbmRleCA5YTI0OTA1N2Y0OTgyNjQ5NDZm
YmJlNjMxOGFmNzMyYmFkNWE3ZGVlLi40YmI0OTQyYTFhZWNiZGU2ZGQyNzdhZDBiNGZiYTgyOGUx
ZjlkMDRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFueS1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBp
L21lbW9yeS9jb25zdHJ1Y3Rvci5hbnktZXhwZWN0ZWQudHh0CkBAIC0xOCwxMiArMTgsMTIgQEAg
UEFTUyBPdXQtb2YtcmFuZ2UgbWF4aW11bSB2YWx1ZSBpbiBkZXNjcmlwdG9yOiA0Mjk0OTY3Mjk2
CiBQQVNTIE91dC1vZi1yYW5nZSBpbml0aWFsIHZhbHVlIGluIGRlc2NyaXB0b3I6IDY4NzE5NDc2
NzM2CiBQQVNTIE91dC1vZi1yYW5nZSBtYXhpbXVtIHZhbHVlIGluIGRlc2NyaXB0b3I6IDY4NzE5
NDc2NzM2CiBQQVNTIEluaXRpYWwgdmFsdWUgZXhjZWVkcyBtYXhpbXVtCi1GQUlMIFNoYXJlZCBt
ZW1vcnkgd2l0aG91dCBtYXhpbXVtIGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBu
ZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgImluaXRpYWwiOiAxMCwgInNoYXJlZCI6IHRydWUgfSki
IGRpZCBub3QgdGhyb3cKK1BBU1MgU2hhcmVkIG1lbW9yeSB3aXRob3V0IG1heGltdW0KIFBBU1Mg
UHJveHkgZGVzY3JpcHRvcgogUEFTUyBPcmRlciBvZiBldmFsdWF0aW9uIGZvciBkZXNjcmlwdG9y
Ci1GQUlMIE9yZGVyIG9mIGV2YWx1YXRpb24gZm9yIGRlc2NyaXB0b3IgKHdpdGggc2hhcmVkKSBh
c3NlcnRfYXJyYXlfZXF1YWxzOiBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkgWyJpbml0
aWFsIiwgImluaXRpYWwgdmFsdWVPZiIsICJtYXhpbXVtIiwgIm1heGltdW0gdmFsdWVPZiIsICJz
aGFyZWQiXSBsZW5ndGggNSwgZ290IFsiaW5pdGlhbCIsICJpbml0aWFsIHZhbHVlT2YiLCAibWF4
aW11bSIsICJtYXhpbXVtIHZhbHVlT2YiXSBsZW5ndGggNAorUEFTUyBPcmRlciBvZiBldmFsdWF0
aW9uIGZvciBkZXNjcmlwdG9yICh3aXRoIHNoYXJlZCkKIFBBU1MgWmVybyBpbml0aWFsCiBQQVNT
IE5vbi16ZXJvIGluaXRpYWwKLUZBSUwgU3RyYXkgYXJndW1lbnQgV2ViQXNzZW1ibHkuTWVtb3J5
IGV4cGVjdHMgZXhhY3RseSBvbmUgYXJndW1lbnQKLUZBSUwgU2hhcmVkIG1lbW9yeSBhc3NlcnRf
ZXF1YWxzOiBwcm90b3R5cGUgb2YgYnVmZmVyIGV4cGVjdGVkIG9iamVjdCAiW29iamVjdCBTaGFy
ZWRBcnJheUJ1ZmZlcl0iIGJ1dCBnb3Qgb2JqZWN0ICJbb2JqZWN0IEFycmF5QnVmZmVyXSIKK1BB
U1MgU3RyYXkgYXJndW1lbnQKK1BBU1MgU2hhcmVkIG1lbW9yeQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5
L2NvbnN0cnVjdG9yLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5h
bnkud29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCA5YTI0OTA1N2Y0OTgyNjQ5NDZmYmJlNjMxOGFm
NzMyYmFkNWE3ZGVlLi40YmI0OTQyYTFhZWNiZGU2ZGQyNzdhZDBiNGZiYTgyOGUxZjlkMDRlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9t
ZW1vcnkvY29uc3RydWN0b3IuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTE4LDEyICsxOCwx
MiBAQCBQQVNTIE91dC1vZi1yYW5nZSBtYXhpbXVtIHZhbHVlIGluIGRlc2NyaXB0b3I6IDQyOTQ5
NjcyOTYKIFBBU1MgT3V0LW9mLXJhbmdlIGluaXRpYWwgdmFsdWUgaW4gZGVzY3JpcHRvcjogNjg3
MTk0NzY3MzYKIFBBU1MgT3V0LW9mLXJhbmdlIG1heGltdW0gdmFsdWUgaW4gZGVzY3JpcHRvcjog
Njg3MTk0NzY3MzYKIFBBU1MgSW5pdGlhbCB2YWx1ZSBleGNlZWRzIG1heGltdW0KLUZBSUwgU2hh
cmVkIG1lbW9yeSB3aXRob3V0IG1heGltdW0gYXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24gIigp
ID0+IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyAiaW5pdGlhbCI6IDEwLCAic2hhcmVkIjogdHJ1
ZSB9KSIgZGlkIG5vdCB0aHJvdworUEFTUyBTaGFyZWQgbWVtb3J5IHdpdGhvdXQgbWF4aW11bQog
UEFTUyBQcm94eSBkZXNjcmlwdG9yCiBQQVNTIE9yZGVyIG9mIGV2YWx1YXRpb24gZm9yIGRlc2Ny
aXB0b3IKLUZBSUwgT3JkZXIgb2YgZXZhbHVhdGlvbiBmb3IgZGVzY3JpcHRvciAod2l0aCBzaGFy
ZWQpIGFzc2VydF9hcnJheV9lcXVhbHM6IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCBhcnJheSBb
ImluaXRpYWwiLCAiaW5pdGlhbCB2YWx1ZU9mIiwgIm1heGltdW0iLCAibWF4aW11bSB2YWx1ZU9m
IiwgInNoYXJlZCJdIGxlbmd0aCA1LCBnb3QgWyJpbml0aWFsIiwgImluaXRpYWwgdmFsdWVPZiIs
ICJtYXhpbXVtIiwgIm1heGltdW0gdmFsdWVPZiJdIGxlbmd0aCA0CitQQVNTIE9yZGVyIG9mIGV2
YWx1YXRpb24gZm9yIGRlc2NyaXB0b3IgKHdpdGggc2hhcmVkKQogUEFTUyBaZXJvIGluaXRpYWwK
IFBBU1MgTm9uLXplcm8gaW5pdGlhbAotRkFJTCBTdHJheSBhcmd1bWVudCBXZWJBc3NlbWJseS5N
ZW1vcnkgZXhwZWN0cyBleGFjdGx5IG9uZSBhcmd1bWVudAotRkFJTCBTaGFyZWQgbWVtb3J5IGFz
c2VydF9lcXVhbHM6IHByb3RvdHlwZSBvZiBidWZmZXIgZXhwZWN0ZWQgb2JqZWN0ICJbb2JqZWN0
IFNoYXJlZEFycmF5QnVmZmVyXSIgYnV0IGdvdCBvYmplY3QgIltvYmplY3QgQXJyYXlCdWZmZXJd
IgorUEFTUyBTdHJheSBhcmd1bWVudAorUEFTUyBTaGFyZWQgbWVtb3J5CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9t
ZW1vcnkvZ3Jvdy5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9ncm93LmFueS1leHBlY3RlZC50eHQK
aW5kZXggNDAwOWY2YWViMmY4ZTcwYzE4YjAwM2YwNmY4YzA3NWFmMjQ0NDc2My4uYTVkZTYwZGQ2
MjgwNjYzMjUwN2NmZmFhNTY1YTJkYWQ4OWI3Y2YwZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9ncm93LmFu
eS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9ncm93LmFueS1leHBlY3RlZC50eHQKQEAgLTE3LDUg
KzE3LDUgQEAgUEFTUyBPdXQtb2YtcmFuZ2UgYXJndW1lbnQ6IDY4NzE5NDc2NzM2CiBQQVNTIE91
dC1vZi1yYW5nZSBhcmd1bWVudDogIjB4MTAwMDAwMDAwIgogUEFTUyBPdXQtb2YtcmFuZ2UgYXJn
dW1lbnQ6IG9iamVjdCAiW29iamVjdCBPYmplY3RdIgogUEFTUyBTdHJheSBhcmd1bWVudAotRkFJ
TCBHcm93aW5nIHNoYXJlZCBtZW1vcnkgZG9lcyBub3QgZGV0YWNoIG9sZCBidWZmZXIgYXNzZXJ0
X2VxdWFsczogQnVmZmVyIGJlZm9yZSBncm93aW5nOiBjb25zdHJ1Y3RvciBleHBlY3RlZCB0cnVl
IGJ1dCBnb3QgZmFsc2UKK1BBU1MgR3Jvd2luZyBzaGFyZWQgbWVtb3J5IGRvZXMgbm90IGRldGFj
aCBvbGQgYnVmZmVyCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnkud29ya2VyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS9tZW1vcnkvZ3Jvdy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCA0MDA5ZjZhZWIy
ZjhlNzBjMThiMDAzZjA2ZjhjMDc1YWYyNDQ0NzYzLi5hNWRlNjBkZDYyODA2NjMyNTA3Y2ZmYWE1
NjVhMmRhZDg5YjdjZjBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2dyb3cuYW55Lndvcmtlci1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
YXNtL2pzYXBpL21lbW9yeS9ncm93LmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0xNyw1ICsx
Nyw1IEBAIFBBU1MgT3V0LW9mLXJhbmdlIGFyZ3VtZW50OiA2ODcxOTQ3NjczNgogUEFTUyBPdXQt
b2YtcmFuZ2UgYXJndW1lbnQ6ICIweDEwMDAwMDAwMCIKIFBBU1MgT3V0LW9mLXJhbmdlIGFyZ3Vt
ZW50OiBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIKIFBBU1MgU3RyYXkgYXJndW1lbnQKLUZBSUwg
R3Jvd2luZyBzaGFyZWQgbWVtb3J5IGRvZXMgbm90IGRldGFjaCBvbGQgYnVmZmVyIGFzc2VydF9l
cXVhbHM6IEJ1ZmZlciBiZWZvcmUgZ3Jvd2luZzogY29uc3RydWN0b3IgZXhwZWN0ZWQgdHJ1ZSBi
dXQgZ290IGZhbHNlCitQQVNTIEdyb3dpbmcgc2hhcmVkIG1lbW9yeSBkb2VzIG5vdCBkZXRhY2gg
b2xkIGJ1ZmZlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvYnVmZmVyLWludGVy
ZmFjZS9hdWRpb2J1ZmZlci1jb3B5LWNoYW5uZWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hdWRpb2J1ZmZlci1pbnRlcmZhY2UvYXVkaW9idWZmZXItY29weS1jaGFubmVsLWV4cGVjdGVk
LnR4dAppbmRleCAwOGQ1MGY4YjUxZmU3NDBhNzYwMDEyODZlNDk5ZGJkYjA1ZWJlYjRiLi4zNzkz
NGZlY2YzNjk0MTRhZmVmZmE3NjVmNDU5ZGFjOGUwNGYxOWM4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1h
cGkvdGhlLWF1ZGlvYnVmZmVyLWludGVyZmFjZS9hdWRpb2J1ZmZlci1jb3B5LWNoYW5uZWwtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9idWZmZXItaW50ZXJmYWNlL2F1ZGlv
YnVmZmVyLWNvcHktY2hhbm5lbC1leHBlY3RlZC50eHQKQEAgLTE5LDkgKzE5LDkgQEAgUEFTUyAg
IDQ6IGJ1ZmZlci5jb3B5RnJvbUNoYW5uZWwoeCwgMykgdGhyZXcgSW5kZXhTaXplRXJyb3I6ICJO
b3QgYSB2YWxpZCBjaGFubmUKIFBBU1MgICA1OiBidWZmZXIuY29weUZyb21DaGFubmVsKHgsIDAs
IC0xKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4KIFBBU1MgICA2OiBidWZmZXIuY29weUZy
b21DaGFubmVsKHgsIDAsIDE2KSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4KIFBBU1MgICA3
OiBidWZmZXIuY29weUZyb21DaGFubmVsKHgsIDMpIHRocmV3IEluZGV4U2l6ZUVycm9yOiAiTm90
IGEgdmFsaWQgY2hhbm5lbE51bWJlci4iLgotRkFJTCBYIDg6IGJ1ZmZlci5jb3B5RnJvbUNoYW5u
ZWwoU2hhcmVkQXJyYXlCdWZmZXIgdmlldywgMCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24u
IGFzc2VydF90cnVlOiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBYIDk6IGJ1ZmZlci5j
b3B5RnJvbUNoYW5uZWwoU2hhcmVkQXJyYXlCdWZmZXIgdmlldywgMCwgMCkgZGlkIG5vdCB0aHJv
dyBhbiBleGNlcHRpb24uIGFzc2VydF90cnVlOiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJ
TCA8IFtjb3B5RnJvbS1leGNlcHRpb25zXSAyIG91dCBvZiAxMSBhc3NlcnRpb25zIHdlcmUgZmFp
bGVkLiBhc3NlcnRfdHJ1ZTogZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK1BBU1MgICA4OiBidWZm
ZXIuY29weUZyb21DaGFubmVsKFNoYXJlZEFycmF5QnVmZmVyIHZpZXcsIDApIHRocmV3IFR5cGVF
cnJvcjogIkFyZ3VtZW50IDEgKCdkZXN0aW5hdGlvbicpIHRvIEF1ZGlvQnVmZmVyLmNvcHlGcm9t
Q2hhbm5lbCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEZsb2F0MzJBcnJheSIuCitQQVNTICAgOTog
YnVmZmVyLmNvcHlGcm9tQ2hhbm5lbChTaGFyZWRBcnJheUJ1ZmZlciB2aWV3LCAwLCAwKSB0aHJl
dyBUeXBlRXJyb3I6ICJBcmd1bWVudCAxICgnZGVzdGluYXRpb24nKSB0byBBdWRpb0J1ZmZlci5j
b3B5RnJvbUNoYW5uZWwgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBGbG9hdDMyQXJyYXkiLgorUEFT
UyA8IFtjb3B5RnJvbS1leGNlcHRpb25zXSBBbGwgYXNzZXJ0aW9ucyBwYXNzZWQuICh0b3RhbCAx
MSBhc3NlcnRpb25zKQogUEFTUyA+IFtjb3B5VG8tZXhjZXB0aW9uc10KIFBBU1MgICBBdWRpb0J1
ZmZlci5wcm90b3R5cGUuY29weVRvQ2hhbm5lbCBkb2VzIGV4aXN0LgogUEFTUyAgIDA6IGJ1ZmZl
ci5jb3B5VG9DaGFubmVsKG51bGwsIDApIHRocmV3IFR5cGVFcnJvcjogIkFyZ3VtZW50IDEgKCdz
b3VyY2UnKSB0byBBdWRpb0J1ZmZlci5jb3B5VG9DaGFubmVsIG11c3QgYmUgYW4gaW5zdGFuY2Ug
b2YgRmxvYXQzMkFycmF5Ii4KQEAgLTMxLDkgKzMxLDkgQEAgUEFTUyAgIDM6IGJ1ZmZlci5jb3B5
VG9DaGFubmVsKHgsIDMpIHRocmV3IEluZGV4U2l6ZUVycm9yOiAiTm90IGEgdmFsaWQgY2hhbm5l
bE4KIFBBU1MgICA0OiBidWZmZXIuY29weVRvQ2hhbm5lbCh4LCAwLCAtMSkgZGlkIG5vdCB0aHJv
dyBhbiBleGNlcHRpb24uCiBQQVNTICAgNTogYnVmZmVyLmNvcHlUb0NoYW5uZWwoeCwgMCwgMTYp
IGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uLgogUEFTUyAgIDY6IGJ1ZmZlci5jb3B5VG9DaGFu
bmVsKHgsIDMpIHRocmV3IEluZGV4U2l6ZUVycm9yOiAiTm90IGEgdmFsaWQgY2hhbm5lbE51bWJl
ci4iLgotRkFJTCBYIDc6IGJ1ZmZlci5jb3B5VG9DaGFubmVsKFNoYXJlZEFycmF5QnVmZmVyIHZp
ZXcsIDApIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uLiBhc3NlcnRfdHJ1ZTogZXhwZWN0ZWQg
dHJ1ZSBnb3QgZmFsc2UKLUZBSUwgWCA4OiBidWZmZXIuY29weVRvQ2hhbm5lbChTaGFyZWRBcnJh
eUJ1ZmZlciB2aWV3LCAwLCAwKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4gYXNzZXJ0X3Ry
dWU6IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIDwgW2NvcHlUby1leGNlcHRpb25zXSAy
IG91dCBvZiAxMCBhc3NlcnRpb25zIHdlcmUgZmFpbGVkLiBhc3NlcnRfdHJ1ZTogZXhwZWN0ZWQg
dHJ1ZSBnb3QgZmFsc2UKK1BBU1MgICA3OiBidWZmZXIuY29weVRvQ2hhbm5lbChTaGFyZWRBcnJh
eUJ1ZmZlciB2aWV3LCAwKSB0aHJldyBUeXBlRXJyb3I6ICJBcmd1bWVudCAxICgnc291cmNlJykg
dG8gQXVkaW9CdWZmZXIuY29weVRvQ2hhbm5lbCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEZsb2F0
MzJBcnJheSIuCitQQVNTICAgODogYnVmZmVyLmNvcHlUb0NoYW5uZWwoU2hhcmVkQXJyYXlCdWZm
ZXIgdmlldywgMCwgMCkgdGhyZXcgVHlwZUVycm9yOiAiQXJndW1lbnQgMSAoJ3NvdXJjZScpIHRv
IEF1ZGlvQnVmZmVyLmNvcHlUb0NoYW5uZWwgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBGbG9hdDMy
QXJyYXkiLgorUEFTUyA8IFtjb3B5VG8tZXhjZXB0aW9uc10gQWxsIGFzc2VydGlvbnMgcGFzc2Vk
LiAodG90YWwgMTAgYXNzZXJ0aW9ucykKIFBBU1MgPiBbY29weUZyb20tdmFsaWRhdGVdCiBQQVNT
ICAgYnVmZmVyLmNvcHlGcm9tQ2hhbm5lbChkc3Q4LCAwKSBpcyBpZGVudGljYWwgdG8gdGhlIGFy
cmF5IFsxLDIsMyw0LDUsNiw3LDhdLgogUEFTUyAgIGJ1ZmZlci5jb3B5RnJvbUNoYW5uZWwoZHN0
OCwgMSkgaXMgaWRlbnRpY2FsIHRvIHRoZSBhcnJheSBbMiwzLDQsNSw2LDcsOCw5XS4KQEAgLTYw
LDUgKzYwLDUgQEAgUEFTUyAgIGJ1ZmZlci5jb3B5VG9DaGFubmVsKHNyYzEwLCAwLCA1KSBpcyBp
ZGVudGljYWwgdG8gdGhlIGFycmF5IFstMSwtMSwtMSwtMSwKIFBBU1MgICBidWZmZXIuY29weVRv
Q2hhbm5lbChzcmMxMCwgMSwgNSkgaXMgaWRlbnRpY2FsIHRvIHRoZSBhcnJheSBbLTEsLTEsLTEs
LTEsLTEsMSwyLDMsNCw1LDYsNyw4LDksMTAsLTEuLi5dLgogUEFTUyAgIGJ1ZmZlci5jb3B5VG9D
aGFubmVsKHNyYzEwLCAyLCA1KSBpcyBpZGVudGljYWwgdG8gdGhlIGFycmF5IFstMSwtMSwtMSwt
MSwtMSwxLDIsMyw0LDUsNiw3LDgsOSwxMCwtMS4uLl0uCiBQQVNTIDwgW2NvcHlUby12YWxpZGF0
ZV0gQWxsIGFzc2VydGlvbnMgcGFzc2VkLiAodG90YWwgMTAgYXNzZXJ0aW9ucykKLUZBSUwgIyBB
VURJVCBUQVNLIFJVTk5FUiBGSU5JU0hFRDogMiBvdXQgb2YgNSB0YXNrcyB3ZXJlIGZhaWxlZC4g
YXNzZXJ0X3RydWU6IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitQQVNTICMgQVVESVQgVEFTSyBS
VU5ORVIgRklOSVNIRUQ6IDUgdGFza3MgcmFuIHN1Y2Nlc3NmdWxseS4KIApkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBhODY0NmI3MzQ2NjZh
ODZlMjgyODE3NGIyODczZTliYzdhNjE4OTFhLi4wYjQwMDM4MDgzMjBjZWI2N2MyOWIzYjU5YzQ0
MzFjZmJiMzMzMGRkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTExLTEzICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IFdlYkFzc2VtYmx5
Lk1lbW9yeSB3aXRoIHNoYXJlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE4NjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtbG9hZC1zaGFyZWQuanM6IEFk
ZGVkLgorICAgICAgICAod2FzbUZyYW1lQ291bnRGcm9tRXJyb3IpOgorICAgICAgICAqIHdhc20v
ZnVuY3Rpb24tdGVzdHMvdHJhcC1zdG9yZS1zaGFyZWQuanM6IEFkZGVkLgorICAgICAgICAqIHdh
c20vc3RyZXNzL3NoYXJlZC13YXNtLW1lbW9yeS1idWZmZXIuanM6IEFkZGVkLgorCiAyMDIwLTEx
LTEyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
VXBncmFkZSB0ZXN0MjYyCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMv
dHJhcC1sb2FkLXNoYXJlZC5qcyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLWxv
YWQtc2hhcmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5ODkwYTdhYWQ1N2U2NDgyNGQxMTRiYjJhMzExODA2
MzI0NDAxNmIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMv
dHJhcC1sb2FkLXNoYXJlZC5qcwpAQCAtMCwwICsxLDM0IEBACitpbXBvcnQgQnVpbGRlciBmcm9t
ICcuLi9CdWlsZGVyLmpzJworaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcycK
KworY29uc3QgcGFnZVNpemUgPSA2NCAqIDEwMjQ7Citjb25zdCBudW1QYWdlcyA9IDEwOworCitj
b25zdCBidWlsZGVyID0gKG5ldyBCdWlsZGVyKCkpCisgICAgLlR5cGUoKS5FbmQoKQorICAgIC5J
bXBvcnQoKQorICAgICAgICAuTWVtb3J5KCJhIiwgImIiLCB7aW5pdGlhbDogbnVtUGFnZXN9KQor
ICAgIC5FbmQoKQorICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgLkV4cG9ydCgpLkZ1bmN0aW9u
KCJmb28iKS5FbmQoKQorICAgIC5Db2RlKCkKKyAgICAgICAgLkZ1bmN0aW9uKCJmb28iLCB7cGFy
YW1zOiBbImkzMiJdLCByZXQ6ICJpMzIifSkKKyAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAg
ICAgICAgICAgLkkzMkxvYWQoMiwgMCkKKyAgICAgICAgICAgIC5SZXR1cm4oKQorICAgICAgICAu
RW5kKCkKKyAgICAuRW5kKCk7CisKK2NvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5n
ZXQoKTsKK2NvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKK2NvbnN0
IGZvbyA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHthOiB7YjogbmV3IFdlYkFz
c2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDogbnVtUGFnZXMsIG1heGltdW06IG51bVBhZ2VzICogMiwg
c2hhcmVkOiB0cnVlfSl9fSkuZXhwb3J0cy5mb287CisKK2Z1bmN0aW9uIHdhc21GcmFtZUNvdW50
RnJvbUVycm9yKGUpIHsKKyAgICBsZXQgc3RhY2tGcmFtZXMgPSBlLnN0YWNrLnNwbGl0KCJcbiIp
LmZpbHRlcigocykgPT4gcy5pbmRleE9mKCJ3YXNtLSIpICE9PSAtMSk7CisgICAgcmV0dXJuIHN0
YWNrRnJhbWVzLmxlbmd0aDsKK30KKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsK
KyAgICBjb25zdCBlID0gYXNzZXJ0LnRocm93cygoKSA9PiBmb28obnVtUGFnZXMgKiBwYWdlU2l6
ZSArIDEpLCBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IsICJPdXQgb2YgYm91bmRzIG1lbW9yeSBh
Y2Nlc3MiKTsKKyAgICBhc3NlcnQuZXEod2FzbUZyYW1lQ291bnRGcm9tRXJyb3IoZSksIDIpOwor
fQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtc3RvcmUtc2hh
cmVkLmpzIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtc3RvcmUtc2hhcmVkLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQ4Y2E5YTg5NjM4MzkxYmYwNGVlZGNiYjZiN2QzZmM1NDFlODE0ZGEKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1zdG9yZS1z
aGFyZWQuanMKQEAgLTAsMCArMSwyOSBAQAoraW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRl
ci5qcycKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnCisKK2NvbnN0IHBh
Z2VTaXplID0gNjQgKiAxMDI0OworY29uc3QgbnVtUGFnZXMgPSAxMDsKKworeworICAgIGNvbnN0
IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAg
ICAuSW1wb3J0KCkKKyAgICAgICAgICAgIC5NZW1vcnkoImEiLCAiYiIsIHtpbml0aWFsOiBudW1Q
YWdlc30pCisgICAgICAgIC5FbmQoKQorICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAg
ICAuRXhwb3J0KCkuRnVuY3Rpb24oImZvbyIpLkVuZCgpCisgICAgICAgIC5Db2RlKCkKKyAgICAg
ICAgICAgIC5GdW5jdGlvbigiZm9vIiwge3BhcmFtczogWyJpMzIiLCAiaTMyIl19KQorICAgICAg
ICAgICAgICAgIC5HZXRMb2NhbCgxKQorICAgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAg
ICAgICAgICAgICAgIC5JMzJTdG9yZSgyLCAwKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAg
IC5FbmQoKTsKKworICAgIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsK
KyAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7CisgICAgY29u
c3QgZm9vID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2E6IHtiOiBuZXcgV2Vi
QXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOiBudW1QYWdlcywgbWF4aW11bTogbnVtUGFnZXMgKiAy
LCBzaGFyZWQ6IHRydWV9KX19KS5leHBvcnRzLmZvbzsKKworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDA7IGkrKykKKyAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBmb28oaSwgbnVtUGFn
ZXMgKiBwYWdlU2l6ZSArIDEpLCBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IsICJPdXQgb2YgYm91
bmRzIG1lbW9yeSBhY2Nlc3MiKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9zdHJlc3Mv
c2hhcmVkLXdhc20tbWVtb3J5LWJ1ZmZlci5qcyBiL0pTVGVzdHMvd2FzbS9zdHJlc3Mvc2hhcmVk
LXdhc20tbWVtb3J5LWJ1ZmZlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kODk2MTNjOTA5MjU1NzA0NTZlOTUw
ODQ1MWU1ZTFjMDNkZTE2ZWMyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL3N0cmVz
cy9zaGFyZWQtd2FzbS1tZW1vcnktYnVmZmVyLmpzCkBAIC0wLDAgKzEsMjQgQEAKK2ltcG9ydCAq
IGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnCisKK2xldCBwYWdlU2l6ZSA9IDY0IDw8IDEw
OworbGV0IG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeworICAgIGluaXRpYWw6IDEs
CisgICAgbWF4aW11bTogNSwKKyAgICBzaGFyZWQ6IHRydWUsCit9KTsKK2xldCBidWZmZXIxID0g
bWVtb3J5LmJ1ZmZlcjsKK2Fzc2VydC5lcShidWZmZXIxLmJ5dGVMZW5ndGgsIHBhZ2VTaXplICog
MSk7Cithc3NlcnQuZXEoYnVmZmVyMSwgbWVtb3J5LmJ1ZmZlcik7CisKK21lbW9yeS5ncm93KDEp
OworbGV0IGJ1ZmZlcjIgPSBtZW1vcnkuYnVmZmVyOworYXNzZXJ0LmVxKGJ1ZmZlcjEuYnl0ZUxl
bmd0aCwgcGFnZVNpemUgKiAxKTsKK2Fzc2VydC5lcShidWZmZXIyLmJ5dGVMZW5ndGgsIHBhZ2VT
aXplICogMik7Cithc3NlcnQuZmFsc3koYnVmZmVyMSA9PT0gYnVmZmVyMik7CisKK2xldCBieXRl
czEgPSBuZXcgVWludDhBcnJheShidWZmZXIxKTsKK2xldCBieXRlczIgPSBuZXcgVWludDhBcnJh
eShidWZmZXIyKTsKK2J5dGVzMVswXSA9IDQyOworYXNzZXJ0LmVxKGJ5dGVzMlswXSwgNDIpOwor
Ynl0ZXMyWzBdID0gNDM7Cithc3NlcnQuZXEoYnl0ZXMxWzBdLCA0Myk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414013</attachid>
            <date>2020-11-13 01:29:30 -0800</date>
            <delta_ts>2020-11-13 16:48:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218693-20201113012929.patch</filename>
            <type>text/plain</type>
            <size>115763</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YTc3YjFmMDc5MTM3MGUzZTU4YjZmNmM3ODE2ZGFmMzUwOTA2OGU4Li5jNmViOGI1MGViYTMwYjc3
MjVkYzE5NWJiM2IzYzEwN2Q1MmQ2OWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NiBAQAorMjAyMC0xMS0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBXZWJBc3NlbWJseS5NZW1vcnkgd2l0aCBzaGFy
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODY5
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBsbGludC9MTEludFBDUmFuZ2VzLmg6CisgICAgICAgIChKU0M6
OkxMSW50Ojppc1dhc21MTEludFBDKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAgICAgICogcnVu
dGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6b3ZlcnJpZGVEZWZhdWx0cyk6CisgICAg
ICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemUpOgorICAgICAgICAqIHdhc20vV2FzbUFpcklS
R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OkFpcklS
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OnJlc3RvcmVX
ZWJBc3NlbWJseUdsb2JhbFN0YXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0
b3I6OmFkZEN1cnJlbnRNZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRv
cjo6ZW1pdENoZWNrQW5kUHJlcGFyZVBvaW50ZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJ
UkdlbmVyYXRvcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9y
OjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFs
U3RhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVt
b3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6ZW1pdENoZWNrQW5kUHJl
cGFyZVBvaW50ZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRDYWxs
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KToK
KyAgICAgICAgKiB3YXNtL1dhc21CaW5kaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6d2Fz
bVRvV2FzbSk6CisgICAgICAgICogd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6dHJhcEhhbmRsZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjplbmFi
bGVGYXN0TWVtb3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6cHJlcGFyZUZhc3RNZW1vcnkpOgor
ICAgICAgICAqIHdhc20vV2FzbUluc3RhbmNlLmg6CisgICAgICAgIChKU0M6Oldhc206Okluc3Rh
bmNlOjpjYWNoZWRNZW1vcnkgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6
Y2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5z
dGFuY2U6OnVwZGF0ZUNhY2hlZE1lbW9yeSk6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNl
OjpvZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSk6CisgICAgICAgIChKU0M6Oldhc206
Okluc3RhbmNlOjpjYWNoZWRNZW1vcnlTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6V2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogd2FzbS9XYXNtTWVtb3J5LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5
SGFuZGxlOjpNZW1vcnlIYW5kbGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnlIYW5kbGU6
On5NZW1vcnlIYW5kbGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Ok1lbW9yeSk6Cisg
ICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
TWVtb3J5Ojp0cnlDcmVhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmFkZHJlc3NJ
c0luQWN0aXZlR3Jvd2FibGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Omdy
b3dTaGFyZWQpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Omdyb3cpOgorICAgICAgICAo
SlNDOjpXYXNtOjpNZW1vcnk6OmR1bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1v
cnk6On5NZW1vcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmFkZHJl
c3NJc0luQWN0aXZlRmFzdE1lbW9yeSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNtTWVt
b3J5Lmg6CisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6YWRkcmVzc0lzSW5BY3RpdmVHcm93
YWJsZU1lbW9yeSk6CisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6b3BlcmF0b3IgYm9vbCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6bWVtb3J5IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5OjpzaXplIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5OjpzaXplSW5QYWdlcyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6aW5pdGlhbCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6bWF4aW11bSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6bW9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6Oldhc206Ok1lbW9yeTo6Y2hlY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpX
YXNtOjpNZW1vcnk6Om9mZnNldE9mTWVtb3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2Fz
bTo6TWVtb3J5OjpvZmZzZXRPZlNpemUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpN
ZW1vcnk6OmFkZHJlc3NJc0luQWN0aXZlRmFzdE1lbW9yeSk6IERlbGV0ZWQuCisgICAgICAgICog
d2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5u
ZWRSZWdpc3RlckluZm86OmdldCk6CisgICAgICAgIChKU0M6Oldhc206OlBpbm5lZFJlZ2lzdGVy
SW5mbzo6UGlubmVkUmVnaXN0ZXJJbmZvKToKKyAgICAgICAgKiB3YXNtL1dhc21NZW1vcnlJbmZv
cm1hdGlvbi5oOgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OnRvU2F2
ZSBjb25zdCk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5TW9kZS5jcHA6CisgICAgICAgIChK
U0M6Oldhc206Om1ha2VTdHJpbmcpOgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeU1vZGUuaDoK
KyAgICAgICAgKiB3YXNtL2pzL0pTVG9XYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6Y3Jl
YXRlSlNUb1dhc21XcmFwcGVyKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0
YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dHJ5Q3JlYXRl
KToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwOgorICAgICAgICAo
SlNDOjpKU1dlYkFzc2VtYmx5TWVtb3J5OjpidWZmZXIpOgorICAgICAgICAoSlNDOjpKU1dlYkFz
c2VtYmx5TWVtb3J5Ojpncm93U3VjY2Vzc0NhbGxiYWNrKToKKyAgICAgICAgKiB3YXNtL2pzL0pT
V2ViQXNzZW1ibHlNZW1vcnkuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rp
b24uY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUZ1bmN0aW9uOjpqc0NhbGxFbnRyeXBv
aW50U2xvdyk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAg
KiB3YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6
OmV2YWx1YXRlKToKKwogMjAyMC0xMS0xMiAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tv
dkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIFN1cHBvcnQgaW1tIGZv
ciByZWYubnVsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU5NDc1NzFhNTgwMTU5YzFjZmRiN2RiNjc1MGMzNDMy
N2Y5M2Q5YjguLjg2YWM0MGJkYjVjMzBlZTRiNmEyOWM4MWM1NjQxYzllNWJiNWI4NTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMC0xMS0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBXZWJBc3NlbWJseS5NZW1v
cnkgd2l0aCBzaGFyZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxODY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkNsb25lU2VyaWFsaXplcjo6Q2xvbmVTZXJpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
b25lU2VyaWFsaXplcjo6ZHVtcElmVGVybWluYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVE
ZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJp
YWxpemVyOjpDbG9uZURlc2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2Vy
aWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y29tcHV0ZU1lbW9yeUNvc3QgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisKIDIwMjAtMTEtMTIgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gRW5hYmxlIGlu
bGluZSByZXBsYWNlZCBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggMzhhZTZjZTExYTg5YmIyY2E2NTdjNThjZjgyZDdlNDc1MThhOTk1MS4uMDUzM2E4MWZkOTYx
MzdiZTk2MDdjNjdmMjNlMjAzMTljZjQwMTYwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMTA4OCw2ICsxMDg4LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICB3YXNtL1dhc21UaWVyVXBDb3VudC5oCiAKICAgICB3YXNt
L2pzL0pTV2ViQXNzZW1ibHkuaAorICAgIHdhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5oCiAg
ICAgd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGMwZWVmMGJjMzBlMDJjZDg3NmM5MzEyZDcxZWQ2ZTAxMjdkM2U0NTguLmJj
MDNjNzhjYjExODFmZjIyMzlhZTFiMTFkM2Y0NGM4ZWE0ZmQ4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNTc0LDcgKzE1NzQsNyBAQAogCQlBRDAwNjU5RTFFQ0FDODEyMDAw
Q0E5MjYgLyogV2FzbUxpbWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUQwMDY1OUQxRUNBQzdGRTAwMENBOTI2IC8qIFdhc21MaW1pdHMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBRDJGQ0JFMzFE
QjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQTcxREI1OERBNDAwQjNF
NzM2IC8qIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaCAqLzsgfTsKIAkJQUQyRkNCRTUxREI1
OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQTkxREI1OERBNDAwQjNFNzM2IC8q
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oICovOyB9OwotCQlBRDJGQ0JFNzFEQjU4REFEMDBCM0U3
MzYgLyogSlNXZWJBc3NlbWJseU1lbW9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQUIxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1i
bHlNZW1vcnkuaCAqLzsgfTsKKwkJQUQyRkNCRTcxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNz
ZW1ibHlNZW1vcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEFEMkZDQkFCMURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5TWVtb3J5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQUQyRkNCRTkx
REI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkFEMURCNThEQTQwMEIz
RTczNiAvKiBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmggKi87IH07CiAJCUFEMkZDQkVCMURC
NThEQUQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5VGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkFGMURCNThEQTQwMEIzRTczNiAvKiBK
U1dlYkFzc2VtYmx5VGFibGUuaCAqLzsgfTsKIAkJQUQyRkNCRUQxREI1OERBRDAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkIxMURCNThEQTQwMEIzRTczNiAvKiBX
ZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmggKi87IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRQQ1Jhbmdlcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50UENSYW5nZXMuaAppbmRleCA0NGY0ZWY5MTAzZDdlMjE2Mjk1
OWRmYTU2ODJlYTZjYjFiNTI4NzEzLi42NGIyZGU4OTI0ZTg3MWQ5NGZiYWNkYTJmZDEwZDg4Mjdh
YjIwYzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRQQ1Jh
bmdlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFBDUmFuZ2VzLmgK
QEAgLTM1LDYgKzM1LDEwIEBAIG5hbWVzcGFjZSBMTEludCB7CiBleHRlcm4gIkMiIHsKICAgICB2
b2lkIGxsaW50UENSYW5nZVN0YXJ0KCk7CiAgICAgdm9pZCBsbGludFBDUmFuZ2VFbmQoKTsKKyNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgdm9pZCB3YXNtTExJbnRQQ1JhbmdlU3RhcnQoKTsK
KyAgICB2b2lkIHdhc21MTEludFBDUmFuZ2VFbmQoKTsKKyNlbmRpZgogfQogCiBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNMTEludFBDKHZvaWQqIHBjKQpAQCAtNDYsNiArNTAsMTcgQEAgQUxXQVlTX0lO
TElORSBib29sIGlzTExJbnRQQyh2b2lkKiBwYykKICAgICByZXR1cm4gbGxpbnRTdGFydCA8PSBw
Y0FzSW50ICYmIHBjQXNJbnQgPD0gbGxpbnRFbmQ7CiB9CiAKKyNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCitBTFdBWVNfSU5MSU5FIGJvb2wgaXNXYXNtTExJbnRQQyh2b2lkKiBwYykKK3sKKyAgICB1
aW50cHRyX3QgcGNBc0ludCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHBjKTsKKyAgICB1aW50
cHRyX3Qgc3RhcnQgPSB1bnRhZ0NvZGVQdHI8dWludHB0cl90LCBDRnVuY3Rpb25QdHJUYWc+KHdh
c21MTEludFBDUmFuZ2VTdGFydCk7CisgICAgdWludHB0cl90IGVuZCA9IHVudGFnQ29kZVB0cjx1
aW50cHRyX3QsIENGdW5jdGlvblB0clRhZz4od2FzbUxMSW50UENSYW5nZUVuZCk7CisgICAgUkVM
RUFTRV9BU1NFUlQoc3RhcnQgPCBlbmQpOworICAgIHJldHVybiBzdGFydCA8PSBwY0FzSW50ICYm
IHBjQXNJbnQgPD0gZW5kOworfQorI2VuZGlmCisKICNpZiAhRU5BQkxFKENfTE9PUCkKIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIExMSW50UEMgPSBHUFJJbmZvOjpyZWdUNDsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CmluZGV4IDgzZTI0YTA4MjEwYjk1ZWI4NzAwM2JjZWUxNjgzYTA5OGE4ZjQ4NjcuLmJlZDVjZGY1
ZTJhOTM0MjI3NDIxODdkMDMzYmFkZjBmMzVhZTA0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTI0NjcsNyArMjQ2
NywxMiBAQCBtYWNybyB3YXNtU2NvcGUoKQogICAgICMgYnV0IHdlIGRvbid0IHdhbnQgdG8gaW50
ZXJmZXJlIHdpdGggdGhlIExMSW50IG9wY29kZXMKICAgICBpbmNsdWRlIFdlYkFzc2VtYmx5CiBl
bmQKKworZ2xvYmFsIF93YXNtTExJbnRQQ1JhbmdlU3RhcnQKK193YXNtTExJbnRQQ1JhbmdlU3Rh
cnQ6CiB3YXNtU2NvcGUoKQorZ2xvYmFsIF93YXNtTExJbnRQQ1JhbmdlRW5kCitfd2FzbUxMSW50
UENSYW5nZUVuZDoKIAogZWxzZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvV2ViQXNzZW1ibHkuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFz
c2VtYmx5LmFzbQppbmRleCA4YmZmYzhhNjk3ZDJlNmU0ZjIwZGU5NjQwNWE1ZjNkMjRmOGExZWJj
Li5kZjhiYmZhMWQ0NzQwNGI3MDdiN2RjZGZjOWJkM2ZmNmZlMzI5MWFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KQEAgLTQ1LDcgKzQ1LDcgQEAgY29u
c3QgTnVtYmVyT2ZXYXNtQXJndW1lbnRzID0gTnVtYmVyT2ZXYXNtQXJndW1lbnRHUFJzICsgTnVt
YmVyT2ZXYXNtQXJndW1lbnRGUFIKICMgVGhlc2UgbXVzdCBtYXRjaCB0aGUgZGVmaW5pdGlvbiBp
biBXYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCiBjb25zdCB3YXNtSW5zdGFuY2UgPSBjc3IwCiBj
b25zdCBtZW1vcnlCYXNlID0gY3NyMwotY29uc3QgbWVtb3J5U2l6ZSA9IGNzcjQKK2NvbnN0IGJv
dW5kc0NoZWNraW5nU2l6ZSA9IGNzcjQKIAogIyBUaGlzIG11c3QgbWF0Y2ggdGhlIGRlZmluaXRp
b24gaW4gTG93TGV2ZWxJbnRlcnByZXRlci5hc20KIGlmIFg4Nl82NApAQCAtMTg3LDcgKzE4Nyw3
IEBAIGVuZAogIyBXYXNtIHNwZWNpZmljIGhlbHBlcnMKIAogbWFjcm8gcHJlc2VydmVDYWxsZWVT
YXZlc1VzZWRCeVdhc20oKQotICAgICMgTk9URTogV2UgaW50ZW50aW9uYWxseSBkb24ndCBzYXZl
IG1lbW9yeUJhc2UgYW5kIG1lbW9yeVNpemUgaGVyZS4gU2VlIHRoZSBjb21tZW50CisgICAgIyBO
T1RFOiBXZSBpbnRlbnRpb25hbGx5IGRvbid0IHNhdmUgbWVtb3J5QmFzZSBhbmQgYm91bmRzQ2hl
Y2tpbmdTaXplIGhlcmUuIFNlZSB0aGUgY29tbWVudAogICAgICMgaW4gcmVzdG9yZUNhbGxlZVNh
dmVzVXNlZEJ5V2FzbSgpIGJlbG93IGZvciB3aHkuCiAgICAgc3VicCBDYWxsZWVTYXZlU3BhY2VT
dGFja0FsaWduZWQsIHNwCiAgICAgaWYgQVJNNjQgb3IgQVJNNjRFCkBAIC0yMDEsNyArMjAxLDcg
QEAgbWFjcm8gcHJlc2VydmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQogZW5kCiAKIG1hY3JvIHJl
c3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQotICAgICMgTk9URTogV2UgaW50ZW50aW9uYWxs
eSBkb24ndCByZXN0b3JlIG1lbW9yeUJhc2UgYW5kIG1lbW9yeVNpemUgaGVyZS4gVGhlc2UgYXJl
IHNhdmVkCisgICAgIyBOT1RFOiBXZSBpbnRlbnRpb25hbGx5IGRvbid0IHJlc3RvcmUgbWVtb3J5
QmFzZSBhbmQgYm91bmRzQ2hlY2tpbmdTaXplIGhlcmUuIFRoZXNlIGFyZSBzYXZlZAogICAgICMg
YW5kIHJlc3RvcmVkIHdoZW4gZW50ZXJpbmcgV2FzbSBieSB0aGUgSlNUb1dhc20gd3JhcHBlciBh
bmQgY2hhbmdlcyB0byB0aGVtIGFyZSBtZWFudAogICAgICMgdG8gYmUgb2JzZXJ2YWJsZSB3aXRo
aW4gdGhlIHNhbWUgV2FzbSBtb2R1bGUuCiAgICAgaWYgQVJNNjQgb3IgQVJNNjRFCkBAIC0yNDAs
OCArMjQwLDggQEAgZW5kCiAKIG1hY3JvIHJlbG9hZE1lbW9yeVJlZ2lzdGVyc0Zyb21JbnN0YW5j
ZShpbnN0YW5jZSwgc2NyYXRjaDEsIHNjcmF0Y2gyKQogICAgIGxvYWRwIFdhc206Okluc3RhbmNl
OjptX2NhY2hlZE1lbW9yeVtpbnN0YW5jZV0sIG1lbW9yeUJhc2UKLSAgICBsb2FkaSBXYXNtOjpJ
bnN0YW5jZTo6bV9jYWNoZWRNZW1vcnlTaXplW2luc3RhbmNlXSwgbWVtb3J5U2l6ZQotICAgIGNh
Z2VkUHJpbWl0aXZlKG1lbW9yeUJhc2UsIG1lbW9yeVNpemUsIHNjcmF0Y2gxLCBzY3JhdGNoMikK
KyAgICBsb2FkaSBXYXNtOjpJbnN0YW5jZTo6bV9jYWNoZWRCb3VuZHNDaGVja2luZ1NpemVbaW5z
dGFuY2VdLCBib3VuZHNDaGVja2luZ1NpemUKKyAgICBjYWdlZFByaW1pdGl2ZShtZW1vcnlCYXNl
LCBib3VuZHNDaGVja2luZ1NpemUsIHNjcmF0Y2gxLCBzY3JhdGNoMikKIGVuZAogCiBtYWNybyB0
aHJvd0V4Y2VwdGlvbihleGNlcHRpb24pCkBAIC04NTYsNyArODU2LDkgQEAgd2FzbU9wKGNhbGxf
aW5kaXJlY3Rfbm9fdGxzLCBXYXNtQ2FsbEluZGlyZWN0Tm9UbHMsIG1hY3JvKGN0eCkKIGVuZCkK
IAogd2FzbU9wKGN1cnJlbnRfbWVtb3J5LCBXYXNtQ3VycmVudE1lbW9yeSwgbWFjcm8oY3R4KQot
ICAgIGxvYWRwIFdhc206Okluc3RhbmNlOjptX2NhY2hlZE1lbW9yeVNpemVbd2FzbUluc3RhbmNl
XSwgdDAKKyAgICBsb2FkcCBXYXNtOjpJbnN0YW5jZTo6bV9tZW1vcnlbd2FzbUluc3RhbmNlXSwg
dDAKKyAgICBsb2FkcCBXYXNtOjpNZW1vcnk6Om1faGFuZGxlW3QwXSwgdDAKKyAgICBsb2FkcCBX
YXNtOjpNZW1vcnlIYW5kbGU6Om1fc2l6ZVt0MF0sIHQwCiAgICAgdXJzaGlmdHEgMTYsIHQwCiAg
ICAgcmV0dXJucShjdHgsIHQwKQogZW5kKQpAQCAtODc0LDcgKzg3Niw3IEBAIGVuZCkKICMgdXNl
cyBvZmZzZXQgYXMgc2NyYXRjaCBhbmQgcmV0dXJucyByZXN1bHQgb24gcG9pbnRlcgogbWFjcm8g
ZW1pdENoZWNrQW5kUHJlcGFyZVBvaW50ZXIoY3R4LCBwb2ludGVyLCBvZmZzZXQsIHNpemUpCiAg
ICAgbGVhcCBzaXplIC0gMVtwb2ludGVyLCBvZmZzZXRdLCB0NQotICAgIGJwYiB0NSwgbWVtb3J5
U2l6ZSwgLmNvbnRpbnVhdGlvbgorICAgIGJwYiB0NSwgYm91bmRzQ2hlY2tpbmdTaXplLCAuY29u
dGludWF0aW9uCiAgICAgdGhyb3dFeGNlcHRpb24oT3V0T2ZCb3VuZHNNZW1vcnlBY2Nlc3MpCiAu
Y29udGludWF0aW9uOgogICAgIGFkZHAgbWVtb3J5QmFzZSwgcG9pbnRlcgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAppbmRleCA5NTg5ODljOTIzYTRmYWNiZjY1NzVj
ZGRmOWYxMmVkNWVhZTE4ZjI4Li5jMjdiMTU2YjE5YjAwZjQ5YmM2ZTBiOThmMDg0NmFiMDYyMzgw
ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcApAQCAtMzY3
LDYgKzM2Nyw3IEBAIHN0YXRpYyB2b2lkIG92ZXJyaWRlRGVmYXVsdHMoKQogCiAjaWYgIUVOQUJM
RShXRUJBU1NFTUJMWV9GQVNUX01FTU9SWSkKICAgICBPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZh
c3RNZW1vcnkoKSA9IGZhbHNlOworICAgIE9wdGlvbnM6OnVzZVNoYXJlZEFycmF5QnVmZmVyKCkg
PSBmYWxzZTsKICNlbmRpZgogCiAjaWYgIUhBVkUoTUFDSF9FWENFUFRJT05TKQpAQCAtNjU5LDEz
ICs2NjAsMTQgQEAgdm9pZCBPcHRpb25zOjppbml0aWFsaXplKCkKICNlbmRpZgogCiAjaWYgQVNB
Tl9FTkFCTEVEICYmIE9TKExJTlVYKSAmJiBFTkFCTEUoV0VCQVNTRU1CTFlfRkFTVF9NRU1PUlkp
Ci0gICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCkpIHsK
KyAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RNZW1vcnkoKSB8fCBP
cHRpb25zOjp1c2VTaGFyZWRBcnJheUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogYXNhbk9wdGlvbnMgPSBnZXRlbnYoIkFTQU5fT1BUSU9OUyIpOwogICAgICAgICAgICAg
ICAgIGJvb2wgb2tUb1VzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSA9IGFzYW5PcHRpb25zCiAgICAg
ICAgICAgICAgICAgICAgICYmIChzdHJzdHIoYXNhbk9wdGlvbnMsICJhbGxvd191c2VyX3NlZ3Zf
aGFuZGxlcj0xIikgfHwgc3Ryc3RyKGFzYW5PcHRpb25zLCAiaGFuZGxlX3NlZ3Y9MCIpKTsKICAg
ICAgICAgICAgICAgICBpZiAoIW9rVG9Vc2VXZWJBc3NlbWJseUZhc3RNZW1vcnkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJXQVJOSU5HOiBBU0FOIGludGVyZmVyZXMgd2l0aCBK
U0Mgc2lnbmFsIGhhbmRsZXJzOyB1c2VXZWJBc3NlbWJseUZhc3RNZW1vcnkgd2lsbCBiZSBkaXNh
YmxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJXQVJOSU5HOiBBU0FOIGlu
dGVyZmVyZXMgd2l0aCBKU0Mgc2lnbmFsIGhhbmRsZXJzOyB1c2VXZWJBc3NlbWJseUZhc3RNZW1v
cnkgYW5kIHVzZVNoYXJlZEFycmF5QnVmZmVyIHdpbGwgYmUgZGlzYWJsZWQuIik7CiAgICAgICAg
ICAgICAgICAgICAgIE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgIE9wdGlvbnM6OnVzZVNoYXJlZEFycmF5QnVmZmVyKCkgPSBm
YWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDQz
ZDBjODcyZWU0YzYzYjRkNTZiNmYwZTM0NjIzNTMzM2U4NGI3OTMuLmYwMzdkYTEzMzlkMzdjMmJi
YWUzYTllYjhjZjMwNjU0ZjEyMjIzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcApAQCAtNjgwLDcgKzY4MCw3IEBAIGNsYXNzIEFp
cklSR2VuZXJhdG9yIHsKICAgICBWZWN0b3I8VHlwZWRUbXA+IG1fbG9jYWxzOwogICAgIFZlY3Rv
cjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgbV91bmxpbmtlZFdhc21Ub1dhc21DYWxsczsgLy8g
TGlzdCBlYWNoIGNhbGwgc2l0ZSBhbmQgdGhlIGZ1bmN0aW9uIGluZGV4IHdob3NlIGFkZHJlc3Mg
aXQgc2hvdWxkIGJlIHBhdGNoZWQgd2l0aC4KICAgICBHUFJSZWcgbV9tZW1vcnlCYXNlR1BSIHsg
SW52YWxpZEdQUlJlZyB9OwotICAgIEdQUlJlZyBtX21lbW9yeVNpemVHUFIgeyBJbnZhbGlkR1BS
UmVnIH07CisgICAgR1BSUmVnIG1fYm91bmRzQ2hlY2tpbmdTaXplR1BSIHsgSW52YWxpZEdQUlJl
ZyB9OwogICAgIEdQUlJlZyBtX3dhc21Db250ZXh0SW5zdGFuY2VHUFIgeyBJbnZhbGlkR1BSUmVn
IH07CiAgICAgYm9vbCBtX21ha2VzQ2FsbHMgeyBmYWxzZSB9OwogCkBAIC03NzIsOCArNzcyLDgg
QEAgQWlySVJHZW5lcmF0b3I6OkFpcklSR2VuZXJhdG9yKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9u
JiBpbmZvLCBCMzo6UHJvY2VkdXJlJiBwcm8KICAgICAgICAgbV9jb2RlLnBpblJlZ2lzdGVyKG1f
d2FzbUNvbnRleHRJbnN0YW5jZUdQUik7CiAKICAgICBpZiAobW9kZSAhPSBNZW1vcnlNb2RlOjpT
aWduYWxpbmcpIHsKLSAgICAgICAgbV9tZW1vcnlTaXplR1BSID0gcGlubmVkUmVncy5zaXplUmVn
aXN0ZXI7Ci0gICAgICAgIG1fY29kZS5waW5SZWdpc3RlcihtX21lbW9yeVNpemVHUFIpOworICAg
ICAgICBtX2JvdW5kc0NoZWNraW5nU2l6ZUdQUiA9IHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdT
aXplUmVnaXN0ZXI7CisgICAgICAgIG1fY29kZS5waW5SZWdpc3RlcihtX2JvdW5kc0NoZWNraW5n
U2l6ZUdQUik7CiAgICAgfQogCiAgICAgbV9jb2RlLnNldE51bUVudHJ5cG9pbnRzKDEpOwpAQCAt
OTE4LDcgKzkxOCw3IEBAIHZvaWQgQWlySVJHZW5lcmF0b3I6OnJlc3RvcmVXZWJBc3NlbWJseUds
b2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0IHJlc3RvCiAgICAgICAgIGNvbnN0IFBp
bm5lZFJlZ2lzdGVySW5mbyogcGlubmVkUmVncyA9ICZQaW5uZWRSZWdpc3RlckluZm86OmdldCgp
OwogICAgICAgICBSZWdpc3RlclNldCBjbG9iYmVyczsKICAgICAgICAgY2xvYmJlcnMuc2V0KHBp
bm5lZFJlZ3MtPmJhc2VNZW1vcnlQb2ludGVyKTsKLSAgICAgICAgY2xvYmJlcnMuc2V0KHBpbm5l
ZFJlZ3MtPnNpemVSZWdpc3Rlcik7CisgICAgICAgIGNsb2JiZXJzLnNldChwaW5uZWRSZWdzLT5i
b3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7CiAgICAgICAgIGlmICghaXNBUk02NCgpKQogICAg
ICAgICAgICAgY2xvYmJlcnMuc2V0KFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMo
KSk7CiAKQEAgLTkzMywxMiArOTMzLDEyIEBAIHZvaWQgQWlySVJHZW5lcmF0b3I6OnJlc3RvcmVX
ZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0IHJlc3RvCiAgICAg
ICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbcGlubmVkUmVnc10gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAg
ICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsK
ICAgICAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy0+YmFzZU1lbW9yeVBv
aW50ZXI7Ci0gICAgICAgICAgICBHUFJSZWcgc2NyYXRjaE9yU2l6ZSA9IEdpZ2FjYWdlOjppc0Vu
YWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogcGlubmVk
UmVncy0+c2l6ZVJlZ2lzdGVyOworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hPckJvdW5kc0No
ZWNraW5nU2l6ZSA9IEdpZ2FjYWdlOjppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyBw
YXJhbXMuZ3BTY3JhdGNoKDApIDogcGlubmVkUmVncy0+Ym91bmRzQ2hlY2tpbmdTaXplUmVnaXN0
ZXI7CiAKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJh
bXNbMF0uZ3ByKCksIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBpbm5l
ZFJlZ3MtPnNpemVSZWdpc3Rlcik7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MocGFyYW1zWzBdLmdwcigpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3Vu
ZHNDaGVja2luZ1NpemUoKSksIHBpbm5lZFJlZ3MtPmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVy
KTsKICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNb
MF0uZ3ByKCksIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7
CiAKLSAgICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZl
LCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLT5zaXplUmVnaXN0ZXIsIHNjcmF0Y2hPclNpemUpOwor
ICAgICAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJh
c2VNZW1vcnksIHBpbm5lZFJlZ3MtPmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyLCBzY3JhdGNo
T3JCb3VuZHNDaGVja2luZ1NpemUpOwogICAgICAgICB9KTsKIAogICAgICAgICBlbWl0UGF0Y2hw
b2ludChibG9jaywgcGF0Y2hwb2ludCwgVG1wKCksIGluc3RhbmNlKTsKQEAgLTExNjgsOCArMTE2
OCwxMiBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KEV4cHJlc3Npb25U
eXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKICAgICBhdXRvIHRlbXAxID0gZzY0KCk7CiAg
ICAgYXV0byB0ZW1wMiA9IGc2NCgpOwogCi0gICAgUkVMRUFTRV9BU1NFUlQoQXJnOjppc1ZhbGlk
QWRkckZvcm0oSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpLCBCMzo6V2lkdGg2
NCkpOwotICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoaW5zdGFuY2VWYWx1ZSgpLCBJbnN0YW5j
ZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCB0ZW1wMSk7CisgICAgUkVMRUFTRV9BU1NF
UlQoQXJnOjppc1ZhbGlkQWRkckZvcm0oSW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCksIEIzOjpX
aWR0aDY0KSk7CisgICAgUkVMRUFTRV9BU1NFUlQoQXJnOjppc1ZhbGlkQWRkckZvcm0oTWVtb3J5
OjpvZmZzZXRPZkhhbmRsZSgpLCBCMzo6V2lkdGg2NCkpOworICAgIFJFTEVBU0VfQVNTRVJUKEFy
Zzo6aXNWYWxpZEFkZHJGb3JtKE1lbW9yeUhhbmRsZTo6b2Zmc2V0T2ZTaXplKCksIEIzOjpXaWR0
aDY0KSk7CisgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcihpbnN0YW5jZVZhbHVlKCksIEluc3Rh
bmNlOjpvZmZzZXRPZk1lbW9yeSgpKSwgdGVtcDEpOworICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFk
ZHIodGVtcDEsIE1lbW9yeTo6b2Zmc2V0T2ZIYW5kbGUoKSksIHRlbXAxKTsKKyAgICBhcHBlbmQo
TW92ZSwgQXJnOjphZGRyKHRlbXAxLCBNZW1vcnlIYW5kbGU6Om9mZnNldE9mU2l6ZSgpKSwgdGVt
cDEpOwogICAgIGNvbnN0ZXhwciB1aW50MzJfdCBzaGlmdFZhbHVlID0gMTY7CiAgICAgc3RhdGlj
X2Fzc2VydChQYWdlQ291bnQ6OnBhZ2VTaXplID09IDF1bGwgPDwgc2hpZnRWYWx1ZSwgIlRoaXMg
bXVzdCBob2xkIGZvciB0aGUgY29kZSBiZWxvdyB0byBiZSBjb3JyZWN0LiIpOwogICAgIGFwcGVu
ZChNb3ZlLCBBcmc6OmltbSgxNiksIHRlbXAyKTsKQEAgLTEzNjMsMTUgKzEzNjcsMTYgQEAgaW5s
aW5lIEFpcklSR2VuZXJhdG9yOjpFeHByZXNzaW9uVHlwZSBBaXJJUkdlbmVyYXRvcjo6ZW1pdENo
ZWNrQW5kUHJlcGFyZVBvaW50ZXIKIAogICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgY2FzZSBN
ZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZzogewotICAgICAgICAvLyBXZSdyZSBub3QgdXNpbmcg
c2lnbmFsIGhhbmRsaW5nIGF0IGFsbCwgd2UgbXVzdCB0aGVyZWZvcmUgY2hlY2sgdGhhdCBubyBt
ZW1vcnkgYWNjZXNzIGV4Y2VlZHMgdGhlIGN1cnJlbnQgbWVtb3J5IHNpemUuCi0gICAgICAgIEFT
U0VSVChtX21lbW9yeVNpemVHUFIpOworICAgICAgICAvLyBJbiBib3VuZCBjaGVja2luZyBtb2Rl
LCB3aGlsZSBzaGFyZWQgd2FzbSBtZW1vcnkgcGFydGlhbGx5IHJlbGllcyBvbiBzaWduYWwgaGFu
ZGxlciB0b28sIHdlIG5lZWQgdG8gcGVyZm9ybSBib3VuZCBjaGVja2luZworICAgICAgICAvLyB0
byBlbnN1cmUgdGhhdCBubyBtZW1vcnkgYWNjZXNzIGV4Y2VlZHMgdGhlIGN1cnJlbnQgbWVtb3J5
IHNpemUuCisgICAgICAgIEFTU0VSVChtX2JvdW5kc0NoZWNraW5nU2l6ZUdQUik7CiAgICAgICAg
IEFTU0VSVChzaXplT2ZPcGVyYXRpb24gKyBvZmZzZXQgPiBvZmZzZXQpOwogICAgICAgICBhdXRv
IHRlbXAgPSBnNjQoKTsKICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YmlnSW1tKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihzaXplT2ZPcGVyYXRpb24pICsgb2Zmc2V0IC0gMSksIHRlbXApOwogICAg
ICAgICBhcHBlbmQoQWRkNjQsIHJlc3VsdCwgdGVtcCk7CiAKICAgICAgICAgZW1pdENoZWNrKFsm
XSB7Ci0gICAgICAgICAgICByZXR1cm4gSW5zdChCcmFuY2g2NCwgbnVsbHB0ciwgQXJnOjpyZWxD
b25kKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwpLCB0ZW1wLCBUbXAobV9tZW1vcnlTaXpl
R1BSKSk7CisgICAgICAgICAgICByZXR1cm4gSW5zdChCcmFuY2g2NCwgbnVsbHB0ciwgQXJnOjpy
ZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwpLCB0ZW1wLCBUbXAobV9ib3VuZHND
aGVja2luZ1NpemVHUFIpKTsKICAgICAgICAgfSwgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgIHRoaXMtPmVt
aXRUaHJvd0V4Y2VwdGlvbihqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzTWVtb3J5QWNj
ZXNzKTsKICAgICAgICAgfSk7CkBAIC0yMTU0LDcgKzIxNTksNyBAQCBhdXRvIEFpcklSR2VuZXJh
dG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2ln
bmF0dXJlLAogICAgICAgICBhdXRvKiBwYXRjaHBvaW50ID0gZW1pdENhbGxQYXRjaHBvaW50KG1f
Y3VycmVudEJsb2NrLCBzaWduYXR1cmUsIHJlc3VsdHMsIGFyZ3MpOwogICAgICAgICAvLyBXZSBu
ZWVkIHRvIGNsb2JiZXIgdGhlIHNpemUgcmVnaXN0ZXIgc2luY2UgdGhlIExMSW50IGFsd2F5cyBi
b3VuZHMgY2hlY2tzCiAgICAgICAgIGlmIChtX21vZGUgPT0gTWVtb3J5TW9kZTo6U2lnbmFsaW5n
KQotICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXQgeyBQaW5u
ZWRSZWdpc3RlckluZm86OmdldCgpLnNpemVSZWdpc3RlciB9KTsKKyAgICAgICAgICAgIHBhdGNo
cG9pbnQtPmNsb2JiZXJMYXRlKFJlZ2lzdGVyU2V0IHsgUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQo
KS5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciB9KTsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKFt1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgZnVuY3Rpb25JbmRleF0gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OwogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQudGhyZWFkU2FmZVBh
dGNoYWJsZU5lYXJDYWxsKCk7CkBAIC0yMjc4LDEzICsyMjgzLDEzIEBAIGF1dG8gQWlySVJHZW5l
cmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1
cmUmIHNpZ25hCiAgICAgICAgICAgICBqaXQuc3RvcmVXYXNtQ29udGV4dEluc3RhbmNlKG5ld0Nv
bnRleHRJbnN0YW5jZSk7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQg
bW9yZSB0aGFuIG9uZSBtZW1vcnkgc2l6ZSByZWdpc3RlcgogICAgICAgICAgICAgLy8gICBzZWU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKLSAgICAgICAg
ICAgIEFTU0VSVChwaW5uZWRSZWdzLnNpemVSZWdpc3RlciAhPSBuZXdDb250ZXh0SW5zdGFuY2Up
OwotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hPclNpemUgPSBHaWdhY2FnZTo6aXNFbmFibGVk
KEdpZ2FjYWdlOjpQcmltaXRpdmUpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IHBpbm5lZFJlZ3Mu
c2l6ZVJlZ2lzdGVyOworICAgICAgICAgICAgQVNTRVJUKHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tp
bmdTaXplUmVnaXN0ZXIgIT0gbmV3Q29udGV4dEluc3RhbmNlKTsKKyAgICAgICAgICAgIEdQUlJl
ZyBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2Fj
YWdlOjpQcmltaXRpdmUpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IHBpbm5lZFJlZ3MuYm91bmRz
Q2hlY2tpbmdTaXplUmVnaXN0ZXI7CiAKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hl
ZE1lbW9yeVNpemUoKSksIHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyKTsgLy8gTWVtb3J5IHNpemUu
CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobmV3Q29udGV4
dEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSks
IHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIpOyAvLyBCb3VuZCBjaGVja2lu
ZyBzaXplLgogICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG5l
d0NvbnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5KCkpLCBiYXNl
TWVtb3J5KTsgLy8gTWVtb3J5Ojp2b2lkKi4KIAotICAgICAgICAgICAgaml0LmNhZ2VDb25kaXRp
b25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJlZ3Muc2l6ZVJl
Z2lzdGVyLCBzY3JhdGNoT3JTaXplKTsKKyAgICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxs
eShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNr
aW5nU2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOwogICAgICAgICB9
KTsKIAogICAgICAgICBlbWl0UGF0Y2hwb2ludChkb0NvbnRleHRTd2l0Y2gsIHBhdGNocG9pbnQs
IFRtcCgpLCBuZXdDb250ZXh0SW5zdGFuY2UsIGluc3RhbmNlVmFsdWUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMzBiM2M3
NzIzMmYyZGVlNWY0NTkzYTRiYzg5OTU2NTdmMTM5OGRmYi4uOTZmM2FhY2Y5NmI0MjIwMTE4ZWJj
ZmU4ZTFjMTg1YzJkN2YzZWNlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMzI1LDcgKzMyNSw3IEBAIGNsYXNzIEIzSVJHZW5l
cmF0b3IgewogICAgIEluc2VydGlvblNldCBtX2NvbnN0YW50SW5zZXJ0aW9uVmFsdWVzOwogICAg
IFZhbHVlKiBtX2ZyYW1lUG9pbnRlciB7IG51bGxwdHIgfTsKICAgICBHUFJSZWcgbV9tZW1vcnlC
YXNlR1BSIHsgSW52YWxpZEdQUlJlZyB9OwotICAgIEdQUlJlZyBtX21lbW9yeVNpemVHUFIgeyBJ
bnZhbGlkR1BSUmVnIH07CisgICAgR1BSUmVnIG1fYm91bmRzQ2hlY2tpbmdTaXplR1BSIHsgSW52
YWxpZEdQUlJlZyB9OwogICAgIEdQUlJlZyBtX3dhc21Db250ZXh0SW5zdGFuY2VHUFIgeyBJbnZh
bGlkR1BSUmVnIH07CiAgICAgYm9vbCBtX21ha2VzQ2FsbHMgeyBmYWxzZSB9OwogCkBAIC00MDgs
OCArNDA4LDggQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihjb25zdCBNb2R1bGVJbmZv
cm1hdGlvbiYgaW5mbywgUHJvY2VkdXJlJiBwcm9jZWR1cmUKICAgICAgICAgbV9wcm9jLnBpblJl
Z2lzdGVyKG1fd2FzbUNvbnRleHRJbnN0YW5jZUdQUik7CiAKICAgICBpZiAobW9kZSAhPSBNZW1v
cnlNb2RlOjpTaWduYWxpbmcpIHsKLSAgICAgICAgbV9tZW1vcnlTaXplR1BSID0gcGlubmVkUmVn
cy5zaXplUmVnaXN0ZXI7Ci0gICAgICAgIG1fcHJvYy5waW5SZWdpc3RlcihtX21lbW9yeVNpemVH
UFIpOworICAgICAgICBtX2JvdW5kc0NoZWNraW5nU2l6ZUdQUiA9IHBpbm5lZFJlZ3MuYm91bmRz
Q2hlY2tpbmdTaXplUmVnaXN0ZXI7CisgICAgICAgIG1fcHJvYy5waW5SZWdpc3RlcihtX2JvdW5k
c0NoZWNraW5nU2l6ZUdQUik7CiAgICAgfQogCiAgICAgaWYgKGluZm8ubWVtb3J5KSB7CkBAIC00
MTcsNyArNDE3LDcgQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihjb25zdCBNb2R1bGVJ
bmZvcm1hdGlvbiYgaW5mbywgUHJvY2VkdXJlJiBwcm9jZWR1cmUKICAgICAgICAgICAgIEFsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAg
IHN3aXRjaCAobV9tb2RlKSB7CiAgICAgICAgICAgICBjYXNlIE1lbW9yeU1vZGU6OkJvdW5kc0No
ZWNraW5nOgotICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocGlubmVkR1BSLCBtX21lbW9y
eVNpemVHUFIgPT0gcGlubmVkR1BSKTsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHBp
bm5lZEdQUiwgbV9ib3VuZHNDaGVja2luZ1NpemVHUFIgPT0gcGlubmVkR1BSKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgTWVtb3J5TW9kZTo6U2lnbmFsaW5nOgog
ICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocGlubmVkR1BSLCBJbnZhbGlkR1BSUmVnID09
IHBpbm5lZEdQUik7CkBAIC01NDUsNyArNTQ1LDcgQEAgdm9pZCBCM0lSR2VuZXJhdG9yOjpyZXN0
b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVkU3RhY2tMaW1pdCByZXN0b3IK
ICAgICAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvKiBwaW5uZWRSZWdzID0gJlBpbm5lZFJl
Z2lzdGVySW5mbzo6Z2V0KCk7CiAgICAgICAgIFJlZ2lzdGVyU2V0IGNsb2JiZXJzOwogICAgICAg
ICBjbG9iYmVycy5zZXQocGlubmVkUmVncy0+YmFzZU1lbW9yeVBvaW50ZXIpOwotICAgICAgICBj
bG9iYmVycy5zZXQocGlubmVkUmVncy0+c2l6ZVJlZ2lzdGVyKTsKKyAgICAgICAgY2xvYmJlcnMu
c2V0KHBpbm5lZFJlZ3MtPmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsKICAgICAgICAgaWYg
KCFpc0FSTTY0KCkpCiAgICAgICAgICAgICBjbG9iYmVycy5zZXQoUmVnaXN0ZXJTZXQ6Om1hY3Jv
U2NyYXRjaFJlZ2lzdGVycygpKTsKIApAQCAtNTYxLDEyICs1NjEsMTIgQEAgdm9pZCBCM0lSR2Vu
ZXJhdG9yOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVkU3RhY2tM
aW1pdCByZXN0b3IKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFtwaW5uZWRSZWdz
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgewogICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFs
bG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRS
ZWdzLT5iYXNlTWVtb3J5UG9pbnRlcjsKLSAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoT3JTaXpl
ID0gR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IHBhcmFtcy5ncFNj
cmF0Y2goMCkgOiBwaW5uZWRSZWdzLT5zaXplUmVnaXN0ZXI7CisgICAgICAgICAgICBHUFJSZWcg
c2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplID0gR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2Fn
ZTo6UHJpbWl0aXZlKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBwaW5uZWRSZWdzLT5ib3VuZHND
aGVja2luZ1NpemVSZWdpc3RlcjsKIAotICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHBhcmFtc1swXS5ncHIoKSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVt
b3J5U2l6ZSgpKSwgcGlubmVkUmVncy0+c2l6ZVJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCksIEluc3RhbmNlOjpv
ZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpKSwgcGlubmVkUmVncy0+Ym91bmRzQ2hl
Y2tpbmdTaXplUmVnaXN0ZXIpOwogICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHBhcmFtc1swXS5ncHIoKSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5
KCkpLCBiYXNlTWVtb3J5KTsKIAotICAgICAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdp
Z2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJlZ3MtPnNpemVSZWdpc3Rlciwg
c2NyYXRjaE9yU2l6ZSk7CisgICAgICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNh
Z2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgcGlubmVkUmVncy0+Ym91bmRzQ2hlY2tpbmdTaXpl
UmVnaXN0ZXIsIHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSk7CiAgICAgICAgIH0pOwogICAg
IH0KIH0KQEAgLTc5Myw3ICs3OTMsOSBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1v
cnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiBhdXRvIEIz
SVJHZW5lcmF0b3I6OmFkZEN1cnJlbnRNZW1vcnkoRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4g
UGFydGlhbFJlc3VsdAogewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKHN0YXRp
Y19jYXN0PE1lbW9yeSo+KG51bGxwdHIpLT5zaXplKCkpKSA9PSBzaXplb2YodWludDY0X3QpLCAi
Y29kZWdlbiByZWxpZXMgb24gdGhpcyBzaXplIik7Ci0gICAgVmFsdWUqIHNpemUgPSBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDY0LCBvcmln
aW4oKSwgaW5zdGFuY2VWYWx1ZSgpLCBzYWZlQ2FzdDxpbnQzMl90PihJbnN0YW5jZTo6b2Zmc2V0
T2ZDYWNoZWRNZW1vcnlTaXplKCkpKTsKKyAgICBWYWx1ZSogbWVtb3J5ID0gbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQ2NCwgb3JpZ2luKCks
IGluc3RhbmNlVmFsdWUoKSwgc2FmZUNhc3Q8aW50MzJfdD4oSW5zdGFuY2U6Om9mZnNldE9mTWVt
b3J5KCkpKTsKKyAgICBWYWx1ZSogaGFuZGxlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQ2NCwgb3JpZ2luKCksIG1lbW9yeSwgc2FmZUNh
c3Q8aW50MzJfdD4oTWVtb3J5OjpvZmZzZXRPZkhhbmRsZSgpKSk7CisgICAgVmFsdWUqIHNpemUg
PSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIElu
dDY0LCBvcmlnaW4oKSwgaGFuZGxlLCBzYWZlQ2FzdDxpbnQzMl90PihNZW1vcnlIYW5kbGU6Om9m
ZnNldE9mU2l6ZSgpKSk7CiAKICAgICBjb25zdGV4cHIgdWludDMyX3Qgc2hpZnRWYWx1ZSA9IDE2
OwogICAgIHN0YXRpY19hc3NlcnQoUGFnZUNvdW50OjpwYWdlU2l6ZSA9PSAxdWxsIDw8IHNoaWZ0
VmFsdWUsICJUaGlzIG11c3QgaG9sZCBmb3IgdGhlIGNvZGUgYmVsb3cgdG8gYmUgY29ycmVjdC4i
KTsKQEAgLTk1NCw5ICs5NTYsOSBAQCBpbmxpbmUgVmFsdWUqIEIzSVJHZW5lcmF0b3I6OmVtaXRD
aGVja0FuZFByZXBhcmVQb2ludGVyKEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsCiAgICAgc3dpdGNo
IChtX21vZGUpIHsKICAgICBjYXNlIE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nOiB7CiAgICAg
ICAgIC8vIFdlJ3JlIG5vdCB1c2luZyBzaWduYWwgaGFuZGxpbmcgYXQgYWxsLCB3ZSBtdXN0IHRo
ZXJlZm9yZSBjaGVjayB0aGF0IG5vIG1lbW9yeSBhY2Nlc3MgZXhjZWVkcyB0aGUgY3VycmVudCBt
ZW1vcnkgc2l6ZS4KLSAgICAgICAgQVNTRVJUKG1fbWVtb3J5U2l6ZUdQUik7CisgICAgICAgIEFT
U0VSVChtX2JvdW5kc0NoZWNraW5nU2l6ZUdQUik7CiAgICAgICAgIEFTU0VSVChzaXplT2ZPcGVy
YXRpb24gKyBvZmZzZXQgPiBvZmZzZXQpOwotICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PFdhc21Cb3VuZHNDaGVja1ZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBtX21lbW9yeVNpemVH
UFIsIHBvaW50ZXIsIHNpemVPZk9wZXJhdGlvbiArIG9mZnNldCAtIDEpOworICAgICAgICBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PFdhc21Cb3VuZHNDaGVja1ZhbHVlPihtX3Byb2MsIG9yaWdp
bigpLCBtX2JvdW5kc0NoZWNraW5nU2l6ZUdQUiwgcG9pbnRlciwgc2l6ZU9mT3BlcmF0aW9uICsg
b2Zmc2V0IC0gMSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTcxMCw3ICsxNzEyLDcg
QEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNv
bnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLAogCiAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0
byBjbG9iYmVyIHRoZSBzaXplIHJlZ2lzdGVyIHNpbmNlIHRoZSBMTEludCBhbHdheXMgYm91bmRz
IGNoZWNrcwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gTWVtb3J5TW9kZTo6U2lnbmFs
aW5nKQotICAgICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3Rl
clNldCB7IFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkuc2l6ZVJlZ2lzdGVyIH0pOworICAgICAg
ICAgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldCB7IFBpbm5l
ZFJlZ2lzdGVySW5mbzo6Z2V0KCkuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgfSk7CiAgICAg
ICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFt1bmxpbmtlZFdhc21Ub1dhc21D
YWxscywgZnVuY3Rpb25JbmRleF0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LnRocmVhZFNhZmVQYXRjaGFibGVOZWFyQ2Fs
bCgpOwpAQCAtMTgzMSwxNiArMTgzMywxNiBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJ
bmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdAogICAg
ICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG9sZENvbnRleHRJbnN0
YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkU3RhY2tMaW1pdCgpKSwgYmFzZU1lbW9yeSk7
CiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoYmFzZU1lbW9yeSwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKG5ld0NvbnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkU3RhY2tMaW1p
dCgpKSk7CiAgICAgICAgICAgICBqaXQuc3RvcmVXYXNtQ29udGV4dEluc3RhbmNlKG5ld0NvbnRl
eHRJbnN0YW5jZSk7Ci0gICAgICAgICAgICBBU1NFUlQocGlubmVkUmVncy5zaXplUmVnaXN0ZXIg
IT0gYmFzZU1lbW9yeSk7CisgICAgICAgICAgICBBU1NFUlQocGlubmVkUmVncy5ib3VuZHNDaGVj
a2luZ1NpemVSZWdpc3RlciAhPSBiYXNlTWVtb3J5KTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgc3VwcG9ydCBtb3JlIHRoYW4gb25lIG1lbW9yeSBzaXplIHJlZ2lzdGVyCiAgICAg
ICAgICAgICAvLyAgIHNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2Mjk1MgotICAgICAgICAgICAgQVNTRVJUKHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyICE9IG5l
d0NvbnRleHRJbnN0YW5jZSk7Ci0gICAgICAgICAgICBHUFJSZWcgc2NyYXRjaE9yU2l6ZSA9IEdp
Z2FjYWdlOjppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyBwYXJhbXMuZ3BTY3JhdGNo
KDApIDogcGlubmVkUmVncy5zaXplUmVnaXN0ZXI7CisgICAgICAgICAgICBBU1NFUlQocGlubmVk
UmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciAhPSBuZXdDb250ZXh0SW5zdGFuY2UpOwor
ICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSA9IEdpZ2FjYWdl
Ojppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDog
cGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlcjsKIAotICAgICAgICAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG5ld0NvbnRleHRJbnN0YW5jZSwgSW5zdGFu
Y2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSwgcGlubmVkUmVncy5zaXplUmVnaXN0ZXIp
OyAvLyBNZW1vcnkgc2l6ZS4KKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6
QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZEJvdW5k
c0NoZWNraW5nU2l6ZSgpKSwgcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7
IC8vIE1lbW9yeSBzaXplLgogICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKG5ld0NvbnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5
KCkpLCBiYXNlTWVtb3J5KTsgLy8gTWVtb3J5Ojp2b2lkKi4KIAotICAgICAgICAgICAgaml0LmNh
Z2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJl
Z3Muc2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JTaXplKTsKKyAgICAgICAgICAgIGppdC5jYWdlQ29u
ZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLmJv
dW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOwog
ICAgICAgICB9KTsKICAgICAgICAgZG9Db250ZXh0U3dpdGNoLT5hcHBlbmROZXdDb250cm9sVmFs
dWUobV9wcm9jLCBKdW1wLCBvcmlnaW4oKSwgY29udGludWF0aW9uKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCmluZGV4IDk0MWQwMTYzN2NjYzkwMjdiYjMw
OTRmOWYyY2NjYjJlNmNkMzFhOTIuLjY1NzU5YTdjYzA5NTRkNmFiNzU5ZWI0YThhOGMxNTE5NGNi
OWNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5n
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKQEAg
LTQ5LDkgKzQ5LDkgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0
clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9XYXNtKHVuc2kKICAgICBHUFJSZWcgYmFzZU1l
bW9yeSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7CiAgICAgQVNTRVJUKGJhc2VNZW1v
cnkgIT0gR1BSUmVnOjpJbnZhbGlkR1BSUmVnKTsKICAgICBBU1NFUlQoYmFzZU1lbW9yeSAhPSBz
Y3JhdGNoKTsKLSAgICBBU1NFUlQocGlubmVkUmVncy5zaXplUmVnaXN0ZXIgIT0gYmFzZU1lbW9y
eSk7Ci0gICAgQVNTRVJUKHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyICE9IHNjcmF0Y2gpOwotICAg
IEdQUlJlZyBzaXplUmVnQXNTY3JhdGNoID0gcGlubmVkUmVncy5zaXplUmVnaXN0ZXI7CisgICAg
QVNTRVJUKHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgIT0gYmFzZU1lbW9y
eSk7CisgICAgQVNTRVJUKHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgIT0g
c2NyYXRjaCk7CisgICAgR1BSUmVnIHNpemVSZWdBc1NjcmF0Y2ggPSBwaW5uZWRSZWdzLmJvdW5k
c0NoZWNraW5nU2l6ZVJlZ2lzdGVyOwogICAgIEFTU0VSVChzaXplUmVnQXNTY3JhdGNoICE9IEdQ
UlJlZzo6SW52YWxpZEdQUlJlZyk7CiAKICAgICAvLyBCMydzIGNhbGwgY29kZWdlbiBlbnN1cmVz
IHRoYXQgdGhlIEpTQ2VsbCBpcyBhIFdlYkFzc2VtYmx5RnVuY3Rpb24uCkBAIC02OCwxMSArNjgs
MTEgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJp
bmRpbmdGYWlsdXJlPiB3YXNtVG9XYXNtKHVuc2kKICAgICAvLyBGSVhNRSB0aGUgZm9sbG93aW5n
IGNvZGUgYXNzdW1lcyB0aGF0IGFsbCBXYXNtOjpJbnN0YW5jZSBoYXZlIHRoZSBzYW1lIHBpbm5l
ZCByZWdpc3RlcnMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5
NTIKICAgICAvLyBTZXQgdXAgdGhlIGNhbGxlZSdzIGJhc2VNZW1vcnkgcmVnaXN0ZXIgYXMgd2Vs
bCBhcyB0aGUgbWVtb3J5IHNpemUgcmVnaXN0ZXJzLgogICAgIHsKLSAgICAgICAgR1BSUmVnIHNj
cmF0Y2hPclNpemUgPSAhR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/
IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyIDogd2FzbUNhbGxpbmdDb252ZW50aW9uKCkucHJvbG9n
dWVTY3JhdGNoR1BSc1sxXTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hPckJvdW5kc0NoZWNraW5n
U2l6ZSA9ICFHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUpID8gcGlubmVk
UmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciA6IHdhc21DYWxsaW5nQ29udmVudGlvbigp
LnByb2xvZ3VlU2NyYXRjaEdQUnNbMV07CiAKLSAgICAgICAgaml0LmxvYWRQdHIoSklUOjpBZGRy
ZXNzKGJhc2VNZW1vcnksIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUo
KSksIHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyKTsgLy8gTWVtb3J5IHNpemUuCisgICAgICAgIGpp
dC5sb2FkUHRyKEpJVDo6QWRkcmVzcyhiYXNlTWVtb3J5LCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0
T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSksIHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdT
aXplUmVnaXN0ZXIpOyAvLyBCb3VuZCBjaGVja2luZyBzaXplLgogICAgICAgICBqaXQubG9hZFB0
cihKSVQ6OkFkZHJlc3MoYmFzZU1lbW9yeSwgV2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVk
TWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsgLy8gV2FzbTo6TWVtb3J5OjpUYWdnZWRBcnJheVN0b3Jh
Z2VQdHI8dm9pZD4gKHZvaWQqKS4KLSAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2Fj
YWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyLCBzY3Jh
dGNoT3JTaXplKTsKKyAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmlt
aXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIs
IHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSk7CiAgICAgfQogCiAgICAgLy8gVGFpbCBjYWxs
IGludG8gdGhlIGNhbGxlZSBXZWJBc3NlbWJseSBmdW5jdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKaW5kZXggM2Vh
MDA4ODkwMWI2YzI3Y2Y2NWIwYjQ3NGRkOGRjOTVjNzgxNTFmZi4uMDRjMzRiN2U4YWU2ZDdkZTZh
YTlhZjQwOTM2YThjM2UyYTU3NGM0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKQEAgLTYzLDI5ICs2Myw0MCBAQCBz
dGF0aWMgU2lnbmFsQWN0aW9uIHRyYXBIYW5kbGVyKFNpZ25hbCwgU2lnSW5mbyYgc2lnSW5mbywg
UGxhdGZvcm1SZWdpc3RlcnMmIGNvbgogICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhh
bmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgInN0YXJ0aW5nIGhhbmRsZXIgZm9yIGZhdWx0IGF0OiAi
LCBSYXdQb2ludGVyKGZhdWx0aW5nSW5zdHJ1Y3Rpb24pKTsKIAogICAgIGRhdGFMb2dMbklmKFdh
c21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkpJVCBtZW1vcnkgc3RhcnQ6
ICIsIFJhd1BvaW50ZXIoc3RhcnRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2woKSksICIgZW5k
OiAiLCBSYXdQb2ludGVyKGVuZE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCgpKSk7Ci0gICAg
Ly8gRmlyc3Qgd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgYXJlIGluIEpJVCBjb2RlIGJlZm9yZSB3
ZSBjYW4gYXF1aXJlIGFueSBsb2Nrcy4gT3RoZXJ3aXNlLAorICAgIGRhdGFMb2dMbklmKFdhc21G
YXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgIldhc21MTEludCBtZW1vcnkgc3Rh
cnQ6ICIsIFJhd1BvaW50ZXIodW50YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWc+KExM
SW50Ojp3YXNtTExJbnRQQ1JhbmdlU3RhcnQpKSwgIiBlbmQ6ICIsIFJhd1BvaW50ZXIodW50YWdD
b2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWc+KExMSW50Ojp3YXNtTExJbnRQQ1JhbmdlRW5k
KSkpOworICAgIC8vIEZpcnN0IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGFyZSBpbiBKSVQgY29k
ZSBvciBXYXNtIExMSW50IGNvZGUgYmVmb3JlIHdlIGNhbiBhcXVpcmUgYW55IGxvY2tzLiBPdGhl
cndpc2UsCiAgICAgLy8gd2UgbWlnaHQgaGF2ZSBjcmFzaGVkIGluIGNvZGUgdGhhdCBpcyBhbHJl
YWR5IGhvbGRpbmcgb25lIG9mIHRoZSBsb2NrcyB3ZSB3YW50IHRvIGFxdWlyZS4KICAgICBhc3Nl
cnRJc05vdFRhZ2dlZChmYXVsdGluZ0luc3RydWN0aW9uKTsKLSAgICBpZiAoaXNKSVRQQyhmYXVs
dGluZ0luc3RydWN0aW9uKSkgewotICAgICAgICBib29sIGZhdWx0ZWRJbkFjdGl2ZUZhc3RNZW1v
cnkgPSBmYWxzZTsKKyAgICBpZiAoaXNKSVRQQyhmYXVsdGluZ0luc3RydWN0aW9uKSB8fCBMTElu
dDo6aXNXYXNtTExJbnRQQyhmYXVsdGluZ0luc3RydWN0aW9uKSkgeworICAgICAgICBib29sIGZh
dWx0ZWRJbkFjdGl2ZUdyb3dhYmxlTWVtb3J5ID0gZmFsc2U7CiAgICAgICAgIHsKICAgICAgICAg
ICAgIHZvaWQqIGZhdWx0aW5nQWRkcmVzcyA9IHNpZ0luZm8uZmF1bHRpbmdBZGRyZXNzOwogICAg
ICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJi
b3NlLCAiY2hlY2tpbmcgZmF1bHRpbmcgYWRkcmVzczogIiwgUmF3UG9pbnRlcihmYXVsdGluZ0Fk
ZHJlc3MpLCAiIGlzIGluIGFuIGFjdGl2ZSBmYXN0IG1lbW9yeSIpOwotICAgICAgICAgICAgZmF1
bHRlZEluQWN0aXZlRmFzdE1lbW9yeSA9IFdhc206Ok1lbW9yeTo6YWRkcmVzc0lzSW5BY3RpdmVG
YXN0TWVtb3J5KGZhdWx0aW5nQWRkcmVzcyk7CisgICAgICAgICAgICBmYXVsdGVkSW5BY3RpdmVH
cm93YWJsZU1lbW9yeSA9IFdhc206Ok1lbW9yeTo6YWRkcmVzc0lzSW5BY3RpdmVHcm93YWJsZU1l
bW9yeShmYXVsdGluZ0FkZHJlc3MpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChmYXVsdGVkSW5B
Y3RpdmVGYXN0TWVtb3J5KSB7CisgICAgICAgIGlmIChmYXVsdGVkSW5BY3RpdmVHcm93YWJsZU1l
bW9yeSkgewogICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlcklu
dGVybmFsOjp2ZXJib3NlLCAiZm91bmQgYWN0aXZlIGZhc3QgbWVtb3J5IGZvciBmYXVsdGluZyBh
ZGRyZXNzIik7Ci0gICAgICAgICAgICBhdXRvJiBjYWxsZWVSZWdpc3RyeSA9IENhbGxlZVJlZ2lz
dHJ5OjpzaW5nbGV0b24oKTsKLSAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2Fs
bGVlUmVnaXN0cnkuZ2V0TG9jaygpKTsKLSAgICAgICAgICAgIGZvciAoYXV0byogY2FsbGVlIDog
Y2FsbGVlUmVnaXN0cnkuYWxsQ2FsbGVlcyhsb2NrZXIpKSB7Ci0gICAgICAgICAgICAgICAgYXV0
byBbc3RhcnQsIGVuZF0gPSBjYWxsZWUtPnJhbmdlKCk7Ci0gICAgICAgICAgICAgICAgZGF0YUxv
Z0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAiZnVuY3Rpb24g
c3RhcnQ6ICIsIFJhd1BvaW50ZXIoc3RhcnQpLCAiIGVuZDogIiwgUmF3UG9pbnRlcihlbmQpKTsK
LSAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPD0gZmF1bHRpbmdJbnN0cnVjdGlvbiAmJiBmYXVs
dGluZ0luc3RydWN0aW9uIDwgZW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklm
KFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZvdW5kIG1hdGNoIik7
Ci0gICAgICAgICAgICAgICAgICAgIE1hY2hpbmVDb250ZXh0Ojphcmd1bWVudFBvaW50ZXI8MT4o
Y29udGV4dCkgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+
KFdhc206OkNvbnRleHQ6OnVzZUZhc3RUTFMoKSkpOwotICAgICAgICAgICAgICAgICAgICBNYWNo
aW5lQ29udGV4dDo6c2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQsIExMSW50OjpnZXRDb2Rl
UHRyPENGdW5jdGlvblB0clRhZz4od2FzbV90aHJvd19mcm9tX2ZhdWx0X2hhbmRsZXJfdHJhbXBv
bGluZSkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2lnbmFsQWN0aW9uOjpIYW5kbGVk
OworCisgICAgICAgICAgICBhdXRvIGRvZXNGYXVsdEluV2FzbSA9IFtdKHZvaWQqIGZhdWx0aW5n
SW5zdHJ1Y3Rpb24pIHsKKyAgICAgICAgICAgICAgICBpZiAoTExJbnQ6OmlzV2FzbUxMSW50UEMo
ZmF1bHRpbmdJbnN0cnVjdGlvbikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgIGF1dG8mIGNhbGxlZVJlZ2lzdHJ5ID0gQ2FsbGVlUmVnaXN0cnk6OnNp
bmdsZXRvbigpOworICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2FsbGVl
UmVnaXN0cnkuZ2V0TG9jaygpKTsKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGNhbGxlZSA6
IGNhbGxlZVJlZ2lzdHJ5LmFsbENhbGxlZXMobG9ja2VyKSkgeworICAgICAgICAgICAgICAgICAg
ICBhdXRvIFtzdGFydCwgZW5kXSA9IGNhbGxlZS0+cmFuZ2UoKTsKKyAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAi
ZnVuY3Rpb24gc3RhcnQ6ICIsIFJhd1BvaW50ZXIoc3RhcnQpLCAiIGVuZDogIiwgUmF3UG9pbnRl
cihlbmQpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0IDw9IGZhdWx0aW5nSW5zdHJ1
Y3Rpb24gJiYgZmF1bHRpbmdJbnN0cnVjdGlvbiA8IGVuZCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3Nl
LCAiZm91bmQgbWF0Y2giKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGlmIChkb2VzRmF1
bHRJbldhc20oZmF1bHRpbmdJbnN0cnVjdGlvbikpIHsKKyAgICAgICAgICAgICAgICBNYWNoaW5l
Q29udGV4dDo6YXJndW1lbnRQb2ludGVyPDE+KGNvbnRleHQpID0gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihXYXNtOjpDb250ZXh0Ojp1c2VGYXN0VExTKCkp
KTsKKyAgICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6c2V0SW5zdHJ1Y3Rpb25Qb2ludGVy
KGNvbnRleHQsIExMSW50OjpnZXRDb2RlUHRyPENGdW5jdGlvblB0clRhZz4od2FzbV90aHJvd19m
cm9tX2ZhdWx0X2hhbmRsZXJfdHJhbXBvbGluZSkpOworICAgICAgICAgICAgICAgIHJldHVybiBT
aWduYWxBY3Rpb246OkhhbmRsZWQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBA
IC0xMDcsNyArMTE4LDcgQEAgdm9pZCBlbmFibGVGYXN0TWVtb3J5KCkKICAgICAgICAgaWYgKCFX
YXNtOjppc1N1cHBvcnRlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICgh
T3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCkpCisgICAgICAgIGlmICghT3B0aW9u
czo6dXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCkgJiYgIU9wdGlvbnM6OnVzZVNoYXJlZEFycmF5
QnVmZmVyKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYWN0aXZhdGVTaWduYWxI
YW5kbGVyc0ZvcihTaWduYWw6OkFjY2Vzc0ZhdWx0KTsKQEAgLTEyNSw3ICsxMzYsNyBAQCB2b2lk
IHByZXBhcmVGYXN0TWVtb3J5KCkKICAgICAgICAgaWYgKCFXYXNtOjppc1N1cHBvcnRlZCgpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICghT3B0aW9uczo6dXNlV2ViQXNzZW1i
bHlGYXN0TWVtb3J5KCkpCisgICAgICAgIGlmICghT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0
TWVtb3J5KCkgJiYgIU9wdGlvbnM6OnVzZVNoYXJlZEFycmF5QnVmZmVyKCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgYWRkU2lnbmFsSGFuZGxlcihTaWduYWw6OkFjY2Vzc0ZhdWx0
LCBbXSAoU2lnbmFsIHNpZ25hbCwgU2lnSW5mbyYgc2lnSW5mbywgUGxhdGZvcm1SZWdpc3RlcnMm
IHVjb250ZXh0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
SW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCmlu
ZGV4IDYwZTU2MTkwMmQ0YzE4ZjgxZWUyZjM3Y2M1YmU3ZDY1NDY2N2RlZWYuLjlhOTg1MmMyNDIy
MDgyN2I3ZWEwZWU3NGRlZmE0MzQ1Yzg4MTBlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21JbnN0YW5jZS5oCkBAIC03Nyw4ICs3Nyw4IEBAIGNsYXNzIEluc3RhbmNlIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRy
PEluCiAgICAgVGFibGUqIHRhYmxlKHVuc2lnbmVkKTsKICAgICB2b2lkIHNldFRhYmxlKHVuc2ln
bmVkLCBSZWY8VGFibGU+JiYpOwogCi0gICAgdm9pZCogY2FjaGVkTWVtb3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWNoZWRNZW1vcnkuZ2V0TWF5QmVOdWxsKGNhY2hlZE1lbW9yeVNpemUoKSk7IH0K
LSAgICBzaXplX3QgY2FjaGVkTWVtb3J5U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkTWVt
b3J5U2l6ZTsgfQorICAgIHZvaWQqIGNhY2hlZE1lbW9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fj
aGVkTWVtb3J5LmdldE1heUJlTnVsbChjYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSk7IH0KKyAg
ICBzaXplX3QgY2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jYWNo
ZWRCb3VuZHNDaGVja2luZ1NpemU7IH0KIAogICAgIHZvaWQgc2V0TWVtb3J5KFJlZjxNZW1vcnk+
JiYgbWVtb3J5KQogICAgIHsKQEAgLTg5LDggKzg5LDggQEAgY2xhc3MgSW5zdGFuY2UgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW5zdGFuY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
SW4KICAgICB2b2lkIHVwZGF0ZUNhY2hlZE1lbW9yeSgpCiAgICAgewogICAgICAgICBpZiAobV9t
ZW1vcnkgIT0gbnVsbHB0cikgewotICAgICAgICAgICAgbV9jYWNoZWRNZW1vcnkgPSBDYWdlZFB0
cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj4obWVtb3J5KCktPm1lbW9y
eSgpLCBtZW1vcnkoKS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG1fY2FjaGVkTWVtb3J5U2l6ZSA9
IG1lbW9yeSgpLT5zaXplKCk7CisgICAgICAgICAgICBtX2NhY2hlZE1lbW9yeSA9IENhZ2VkUHRy
PEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPihtZW1vcnkoKS0+bWVtb3J5
KCksIG1lbW9yeSgpLT5ib3VuZHNDaGVja2luZ1NpemUoKSk7CisgICAgICAgICAgICBtX2NhY2hl
ZEJvdW5kc0NoZWNraW5nU2l6ZSA9IG1lbW9yeSgpLT5ib3VuZHNDaGVja2luZ1NpemUoKTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtMTQ2LDcgKzE0Niw3IEBAIGNsYXNzIEluc3RhbmNlIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRy
PEluCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk1lbW9yeSgpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihJbnN0YW5jZSwgbV9tZW1vcnkpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZkdsb2JhbHMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fZ2xv
YmFscyk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FjaGVkTWVtb3J5KCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX2NhY2hlZE1lbW9yeSk7IH0KLSAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihJbnN0YW5jZSwgbV9jYWNoZWRNZW1vcnlTaXplKTsgfQorICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fY2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKTsgfQogICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZQb2ludGVyVG9Ub3BFbnRyeUZyYW1lKCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX3BvaW50ZXJUb1RvcEVudHJ5RnJhbWUpOyB9
CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUG9pbnRlclRvQWN0dWFsU3RhY2tMaW1p
dCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5jZSwgbV9wb2ludGVyVG9BY3R1YWxT
dGFja0xpbWl0KTsgfQpAQCAtMjAxLDcgKzIwMSw3IEBAIGNsYXNzIEluc3RhbmNlIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPElu
CiAgICAgdm9pZCogbV9vd25lciB7IG51bGxwdHIgfTsgLy8gSW4gYSBKUyBlbWJlZGRpbmcsIHRo
aXMgaXMgYSBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqLgogICAgIENvbnRleHQqIG1fY29udGV4dCB7
IG51bGxwdHIgfTsKICAgICBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdD
YWdlZFB0cj4gbV9jYWNoZWRNZW1vcnk7Ci0gICAgc2l6ZV90IG1fY2FjaGVkTWVtb3J5U2l6ZSB7
IDAgfTsKKyAgICBzaXplX3QgbV9jYWNoZWRCb3VuZHNDaGVja2luZ1NpemUgeyAwIH07CiAgICAg
UmVmPE1vZHVsZT4gbV9tb2R1bGU7CiAgICAgUmVmUHRyPENvZGVCbG9jaz4gbV9jb2RlQmxvY2s7
CiAgICAgUmVmUHRyPE1lbW9yeT4gbV9tZW1vcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21NZW1vcnkuY3BwCmluZGV4IGEyNmU4MWQ3MTI0ZjMwYWUxM2Q4MmI3NGNiMWQ0MzA2YTM0
ZTI1YjIuLjMwMDQyNDZlNTlhZjdiZjY1NjcxOGMxMDM0MThhNWJiZTU5MjM1OGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAj
aW5jbHVkZSA8d3RmL1JBTVNpemUuaD4KKyNpbmNsdWRlIDx3dGYvU3RkU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiAjaW5jbHVkZSA8Y3N0cmluZz4KQEAgLTEzMywxNiArMTM0LDU1
IEBAIGNsYXNzIE1lbW9yeU1hbmFnZXIgewogICAgICAgICAKICAgICAgICAgZGF0YUxvZ0xuSWYo
T3B0aW9uczo6bG9nV2ViQXNzZW1ibHlNZW1vcnkoKSwgIkZyZWVkIHZpcnR1YWw7IHN0YXRlOiAi
LCAqdGhpcyk7CiAgICAgfQotICAgIAotICAgIGJvb2wgaXNBZGRyZXNzSW5GYXN0TWVtb3J5KHZv
aWQqIGFkZHJlc3MpCisKKyAgICBNZW1vcnlSZXN1bHQgdHJ5QWxsb2NhdGVHcm93YWJsZUJvdW5k
c0NoZWNraW5nTWVtb3J5KHNpemVfdCBtYXBwZWRDYXBhY2l0eSkKKyAgICB7CisgICAgICAgIE1l
bW9yeVJlc3VsdCByZXN1bHQgPSBbJl0geworICAgICAgICAgICAgYXV0byBob2xkZXIgPSBob2xk
TG9jayhtX2xvY2spOworICAgICAgICAgICAgdm9pZCogcmVzdWx0ID0gR2lnYWNhZ2U6OnRyeUFs
bG9jYXRlWmVyb2VkVmlydHVhbFBhZ2VzKEdpZ2FjYWdlOjpQcmltaXRpdmUsIG1hcHBlZENhcGFj
aXR5KTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiBN
ZW1vcnlSZXN1bHQobnVsbHB0ciwgTWVtb3J5UmVzdWx0OjpTeW5jVHJ5VG9SZWNsYWltTWVtb3J5
KTsKKworICAgICAgICAgICAgbV9ncm93YWJsZUJvdW5kc0NoZWNraW5nTWVtb3JpZXMuaW5zZXJ0
KHN0ZDo6bWFrZV9wYWlyKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHJlc3VsdCksIG1hcHBlZENh
cGFjaXR5KSk7CisKKyAgICAgICAgICAgIHJldHVybiBNZW1vcnlSZXN1bHQocmVzdWx0LCBNZW1v
cnlSZXN1bHQ6OlN1Y2Nlc3MpOworICAgICAgICB9KCk7CisKKyAgICAgICAgZGF0YUxvZ0xuSWYo
T3B0aW9uczo6bG9nV2ViQXNzZW1ibHlNZW1vcnkoKSwgIkFsbG9jYXRlZCB2aXJ0dWFsOiAiLCBy
ZXN1bHQsICI7IHN0YXRlOiAiLCAqdGhpcyk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisKKyAgICB2b2lkIGZyZWVHcm93YWJsZUJvdW5kc0NoZWNraW5nTWVtb3J5KHZvaWQqIGJh
c2VQdHIsIHNpemVfdCBtYXBwZWRDYXBhY2l0eSkKKyAgICB7CisgICAgICAgIHsKKyAgICAgICAg
ICAgIGF1dG8gaG9sZGVyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgICAgIEdpZ2FjYWdl
OjpmcmVlVmlydHVhbFBhZ2VzKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VQdHIsIG1hcHBlZENh
cGFjaXR5KTsKKyAgICAgICAgICAgIG1fZ3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9yaWVzLmVy
YXNlKHN0ZDo6bWFrZV9wYWlyKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGJhc2VQdHIpLCBtYXBw
ZWRDYXBhY2l0eSkpOworICAgICAgICB9CisKKyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6
bG9nV2ViQXNzZW1ibHlNZW1vcnkoKSwgIkZyZWVkIHZpcnR1YWw7IHN0YXRlOiAiLCAqdGhpcyk7
CisgICAgfQorCisgICAgYm9vbCBpc0FkZHJlc3NJbkdyb3dhYmxlTWVtb3J5KHZvaWQqIGFkZHJl
c3MpCiAgICAgewotICAgICAgICAvLyBOT1RFOiBUaGlzIGNhbiBiZSBjYWxsZWQgZnJvbSBhIHNp
Z25hbCBoYW5kbGVyLCBidXQgb25seSBhZnRlciB3ZSBwcm92ZWQgdGhhdCB3ZSdyZSBpbiBKSVQg
Y29kZS4KKyAgICAgICAgLy8gTk9URTogVGhpcyBjYW4gYmUgY2FsbGVkIGZyb20gYSBzaWduYWwg
aGFuZGxlciwgYnV0IG9ubHkgYWZ0ZXIgd2UgcHJvdmVkIHRoYXQgd2UncmUgaW4gSklUIGNvZGUg
b3IgV2FzbUxMSW50IGNvZGUuCiAgICAgICAgIGF1dG8gaG9sZGVyID0gaG9sZExvY2sobV9sb2Nr
KTsKICAgICAgICAgZm9yICh2b2lkKiBtZW1vcnkgOiBtX2Zhc3RNZW1vcmllcykgewogICAgICAg
ICAgICAgY2hhciogc3RhcnQgPSBzdGF0aWNfY2FzdDxjaGFyKj4obWVtb3J5KTsKICAgICAgICAg
ICAgIGlmIChzdGFydCA8PSBhZGRyZXNzICYmIGFkZHJlc3MgPD0gc3RhcnQgKyBNZW1vcnk6OmZh
c3RNYXBwZWRCeXRlcygpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CisgICAgICAgIHVpbnRwdHJfdCBhZGRyZXNzVmFsdWUgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PihhZGRyZXNzKTsKKyAgICAgICAgYXV0byBpdGVyYXRvciA9IHN0ZDo6dXBwZXJfYm91bmQobV9n
cm93YWJsZUJvdW5kc0NoZWNraW5nTWVtb3JpZXMuYmVnaW4oKSwgbV9ncm93YWJsZUJvdW5kc0No
ZWNraW5nTWVtb3JpZXMuZW5kKCksIHN0ZDo6bWFrZV9wYWlyKGFkZHJlc3NWYWx1ZSwgMCksCisg
ICAgICAgICAgICBbXShzdGQ6OnBhaXI8dWludHB0cl90LCBzaXplX3Q+IGEsIHN0ZDo6cGFpcjx1
aW50cHRyX3QsIHNpemVfdD4gYikgeworICAgICAgICAgICAgICAgIHJldHVybiAoYS5maXJzdCAr
IGEuc2Vjb25kKSA8IChiLmZpcnN0ICsgYi5zZWNvbmQpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIGlmIChpdGVyYXRvciAhPSBtX2dyb3dhYmxlQm91bmRzQ2hlY2tpbmdNZW1vcmllcy5lbmQo
KSkgeworICAgICAgICAgICAgLy8gU2luY2Ugd2UgbmV2ZXIgaGF2ZSBvdmVybGFwcGVkIHJhbmdl
IGluIG1fZ3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9yaWVzLCBqdXN0IGNoZWNraW5nIG9uZSBs
b3dlci1ib3VuZCByYW5nZSBpcyBlbm91Z2guCisgICAgICAgICAgICBpZiAoaXRlcmF0b3ItPmZp
cnN0IDw9IGFkZHJlc3NWYWx1ZSAmJiBhZGRyZXNzVmFsdWUgPCAoaXRlcmF0b3ItPmZpcnN0ICsg
aXRlcmF0b3ItPnNlY29uZCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTkyLDYgKzIzMiw3IEBAIGNs
YXNzIE1lbW9yeU1hbmFnZXIgewogICAgIExvY2sgbV9sb2NrOwogICAgIHVuc2lnbmVkIG1fbWF4
RmFzdE1lbW9yeUNvdW50IHsgMCB9OwogICAgIFZlY3Rvcjx2b2lkKj4gbV9mYXN0TWVtb3JpZXM7
CisgICAgU3RkU2V0PHN0ZDo6cGFpcjx1aW50cHRyX3QsIHNpemVfdD4+IG1fZ3Jvd2FibGVCb3Vu
ZHNDaGVja2luZ01lbW9yaWVzOwogICAgIHNpemVfdCBtX3BoeXNpY2FsQnl0ZXMgeyAwIH07CiB9
OwogCkBAIC0yMzUsMzAgKzI3Niw2OSBAQCBib29sIHRyeUFsbG9jYXRlKGNvbnN0IEZ1bmMmIGFs
bG9jYXRlLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoTWVtb3J5OjpOb3RpZnlQcgogCiB9IC8v
IGFub255bW91cyBuYW1lc3BhY2UKIAorCitNZW1vcnlIYW5kbGU6Ok1lbW9yeUhhbmRsZSh2b2lk
KiBtZW1vcnksIHNpemVfdCBzaXplLCBzaXplX3QgbWFwcGVkQ2FwYWNpdHksIFBhZ2VDb3VudCBp
bml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgTWVtb3J5U2hhcmluZ01vZGUgc2hhcmluZ01vZGUs
IE1lbW9yeU1vZGUgbW9kZSkKKyAgICA6IG1fbWVtb3J5KG1lbW9yeSwgbWFwcGVkQ2FwYWNpdHkp
CisgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAsIG1fbWFwcGVkQ2FwYWNpdHkobWFwcGVkQ2FwYWNp
dHkpCisgICAgLCBtX2luaXRpYWwoaW5pdGlhbCkKKyAgICAsIG1fbWF4aW11bShtYXhpbXVtKQor
ICAgICwgbV9zaGFyaW5nTW9kZShzaGFyaW5nTW9kZSkKKyAgICAsIG1fbW9kZShtb2RlKQorewor
fQorCitNZW1vcnlIYW5kbGU6On5NZW1vcnlIYW5kbGUoKQoreworICAgIGlmIChtX21lbW9yeSkg
eworICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZVBoeXNpY2FsQnl0ZXMobV9zaXplKTsKKyAg
ICAgICAgc3dpdGNoIChtX21vZGUpIHsKKyAgICAgICAgY2FzZSBNZW1vcnlNb2RlOjpTaWduYWxp
bmc6CisgICAgICAgICAgICBpZiAobXByb3RlY3QobWVtb3J5KCksIE1lbW9yeTo6ZmFzdE1hcHBl
ZEJ5dGVzKCksIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpKSB7CisgICAgICAgICAgICAgICAgZGF0
YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZUZhc3RNZW1vcnkobWVtb3J5KCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmc6
IHsKKyAgICAgICAgICAgIHN3aXRjaCAobV9zaGFyaW5nTW9kZSkgeworICAgICAgICAgICAgY2Fz
ZSBNZW1vcnlTaGFyaW5nTW9kZTo6RGVmYXVsdDoKKyAgICAgICAgICAgICAgICBHaWdhY2FnZTo6
ZnJlZVZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBtZW1vcnkoKSwgbV9zaXplKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTWVtb3J5U2hhcmluZ01v
ZGU6OlNoYXJlZDogeworICAgICAgICAgICAgICAgIGlmIChtcHJvdGVjdChtZW1vcnkoKSwgbV9t
YXBwZWRDYXBhY2l0eSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIp
OworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZUdyb3dh
YmxlQm91bmRzQ2hlY2tpbmdNZW1vcnkobWVtb3J5KCksIG1fbWFwcGVkQ2FwYWNpdHkpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwogTWVtb3J5OjpN
ZW1vcnkoKQorICAgIDogbV9oYW5kbGUoYWRvcHRSZWYoKm5ldyBNZW1vcnlIYW5kbGUobnVsbHB0
ciwgMCwgMCwgUGFnZUNvdW50KDApLCBQYWdlQ291bnQoMCksIE1lbW9yeVNoYXJpbmdNb2RlOjpE
ZWZhdWx0LCBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpKQogewogfQogCi1NZW1vcnk6Ok1l
bW9yeShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIEZ1bmN0aW9uPHZvaWQo
Tm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBGdW5jdGlvbjx2b2lkKFN5
bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdURjo6RnVuY3Rpb248
dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNjZXNzQ2Fs
bGJhY2spCi0gICAgOiBtX2luaXRpYWwoaW5pdGlhbCkKLSAgICAsIG1fbWF4aW11bShtYXhpbXVt
KQorTWVtb3J5OjpNZW1vcnkoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBN
ZW1vcnlTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSwgRnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3Vy
ZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIEZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFp
bSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNj
ZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykKKyAgICA6
IG1faGFuZGxlKGFkb3B0UmVmKCpuZXcgTWVtb3J5SGFuZGxlKG51bGxwdHIsIDAsIDAsIGluaXRp
YWwsIG1heGltdW0sIHNoYXJpbmdNb2RlLCBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpKQog
ICAgICwgbV9ub3RpZnlNZW1vcnlQcmVzc3VyZShXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJl
KSkKICAgICAsIG1fc3luY1RyeVRvUmVjbGFpbU1lbW9yeShXVEZNb3ZlKHN5bmNUcnlUb1JlY2xh
aW1NZW1vcnkpKQogICAgICwgbV9ncm93U3VjY2Vzc0NhbGxiYWNrKFdURk1vdmUoZ3Jvd1N1Y2Nl
c3NDYWxsYmFjaykpCiB7CiAgICAgQVNTRVJUKCFpbml0aWFsLmJ5dGVzKCkpOwotICAgIEFTU0VS
VChtX21vZGUgPT0gTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpOworICAgIEFTU0VSVChtb2Rl
KCkgPT0gTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpOwogICAgIGRhdGFMb2dMbklmKHZlcmJv
c2UsICJNZW1vcnk6Ok1lbW9yeSBhbGxvY2F0aW5nICIsICp0aGlzKTsKICAgICBBU1NFUlQoIW1l
bW9yeSgpKTsKIH0KIAotTWVtb3J5OjpNZW1vcnkodm9pZCogbWVtb3J5LCBQYWdlQ291bnQgaW5p
dGlhbCwgUGFnZUNvdW50IG1heGltdW0sIHNpemVfdCBtYXBwZWRDYXBhY2l0eSwgTWVtb3J5TW9k
ZSBtb2RlLCBGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVz
c3VyZSwgRnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWlt
TWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNv
dW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKQotICAgIDogbV9tZW1vcnkobWVtb3J5LCBpbml0
aWFsLmJ5dGVzKCkpCi0gICAgLCBtX3NpemUoaW5pdGlhbC5ieXRlcygpKQotICAgICwgbV9pbml0
aWFsKGluaXRpYWwpCi0gICAgLCBtX21heGltdW0obWF4aW11bSkKLSAgICAsIG1fbWFwcGVkQ2Fw
YWNpdHkobWFwcGVkQ2FwYWNpdHkpCi0gICAgLCBtX21vZGUobW9kZSkKK01lbW9yeTo6TWVtb3J5
KFJlZjxNZW1vcnlIYW5kbGU+JiYgaGFuZGxlLCBGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJl
KT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgRnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWlt
KT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nl
c3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKQorICAgIDog
bV9oYW5kbGUoV1RGTW92ZShoYW5kbGUpKQogICAgICwgbV9ub3RpZnlNZW1vcnlQcmVzc3VyZShX
VEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJlKSkKICAgICAsIG1fc3luY1RyeVRvUmVjbGFpbU1l
bW9yeShXVEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpKQogICAgICwgbV9ncm93U3VjY2Vz
c0NhbGxiYWNrKFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykpCkBAIC0yNzEsNyArMzUxLDEy
IEBAIFJlZjxNZW1vcnk+IE1lbW9yeTo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBNZW1vcnkoKSk7CiB9CiAKLVJlZlB0cjxNZW1vcnk+IE1lbW9yeTo6dHJ5Q3JlYXRlKFBhZ2VD
b3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgV1RGOjpGdW5jdGlvbjx2b2lkKE5vdGlm
eVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFN5
bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdURjo6RnVuY3Rpb248
dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNjZXNzQ2Fs
bGJhY2spCitSZWY8TWVtb3J5PiBNZW1vcnk6OmNyZWF0ZShSZWY8TWVtb3J5SGFuZGxlPiYmIGhh
bmRsZSwgV1RGOjpGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQ
cmVzc3VyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlU
b1JlY2xhaW1NZW1vcnksIFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50
LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNjZXNzQ2FsbGJhY2spCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTWVtb3J5KFdURk1vdmUoaGFuZGxlKSwgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVz
c3VyZSksIFdURk1vdmUoc3luY1RyeVRvUmVjbGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nl
c3NDYWxsYmFjaykpKTsKK30KKworUmVmUHRyPE1lbW9yeT4gTWVtb3J5Ojp0cnlDcmVhdGUoUGFn
ZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBNZW1vcnlTaGFyaW5nTW9kZSBzaGFy
aW5nTW9kZSwgV1RGOjpGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1v
cnlQcmVzc3VyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNU
cnlUb1JlY2xhaW1NZW1vcnksIFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNv
dW50LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNjZXNzQ2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGlu
aXRpYWwpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFtYXhpbXVtIHx8IG1heGltdW0gPj0gaW5pdGlh
bCk7IC8vIFRoaXMgc2hvdWxkIGJlIGd1YXJhbnRlZWQgYnkgb3VyIGNhbGxlci4KQEAgLTI4NSw3
ICszNzAsNyBAQCBSZWZQdHI8TWVtb3J5PiBNZW1vcnk6OnRyeUNyZWF0ZShQYWdlQ291bnQgaW5p
dGlhbCwgUGFnZUNvdW50IG1heGltdW0sIFdURjo6RnVuYwogICAgIGlmIChtYXhpbXVtICYmICFt
YXhpbXVtQnl0ZXMpIHsKICAgICAgICAgLy8gVXNlciBzcGVjaWZpZWQgYSB6ZXJvIG1heGltdW0s
IGluaXRpYWwgc2l6ZSBtdXN0IGFsc28gYmUgemVyby4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IWluaXRpYWxCeXRlcyk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVtb3J5KGluaXRp
YWwsIG1heGltdW0sIFdURk1vdmUobm90aWZ5TWVtb3J5UHJlc3N1cmUpLCBXVEZNb3ZlKHN5bmNU
cnlUb1JlY2xhaW1NZW1vcnkpLCBXVEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJhY2spKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVtb3J5KGluaXRpYWwsIG1heGltdW0sIHNoYXJpbmdN
b2RlLCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJlKSwgV1RGTW92ZShzeW5jVHJ5VG9SZWNs
YWltTWVtb3J5KSwgV1RGTW92ZShncm93U3VjY2Vzc0NhbGxiYWNrKSkpOwogICAgIH0KICAgICAK
ICAgICBib29sIGRvbmUgPSB0cnlBbGxvY2F0ZSgKQEAgLTMwNiw0OCArMzkxLDU2IEBAIFJlZlB0
cjxNZW1vcnk+IE1lbW9yeTo6dHJ5Q3JlYXRlKFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQg
bWF4aW11bSwgV1RGOjpGdW5jCiAgICAgfQogICAgIAogICAgIGlmIChmYXN0TWVtb3J5KSB7Ci0g
ICAgICAgIAogICAgICAgICBpZiAobXByb3RlY3QoZmFzdE1lbW9yeSArIGluaXRpYWxCeXRlcywg
TWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSAtIGluaXRpYWxCeXRlcywgUFJPVF9OT05FKSkgewog
ICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyks
ICJcbiIpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVtb3J5KGZhc3RNZW1vcnksIGlu
aXRpYWwsIG1heGltdW0sIE1lbW9yeTo6ZmFzdE1hcHBlZEJ5dGVzKCksIE1lbW9yeU1vZGU6OlNp
Z25hbGluZywgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1vdmUoc3luY1RyeVRv
UmVjbGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykpKTsKKyAgICAgICAg
cmV0dXJuIE1lbW9yeTo6Y3JlYXRlKGFkb3B0UmVmKCpuZXcgTWVtb3J5SGFuZGxlKGZhc3RNZW1v
cnksIGluaXRpYWxCeXRlcywgTWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSwgaW5pdGlhbCwgbWF4
aW11bSwgc2hhcmluZ01vZGUsIE1lbW9yeU1vZGU6OlNpZ25hbGluZykpLCBXVEZNb3ZlKG5vdGlm
eU1lbW9yeVByZXNzdXJlKSwgV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92
ZShncm93U3VjY2Vzc0NhbGxiYWNrKSk7CiAgICAgfQogICAgIAogICAgIGlmIChVTkxJS0VMWShP
cHRpb25zOjpjcmFzaElmV2ViQXNzZW1ibHlDYW50RmFzdE1lbW9yeSgpKSkKICAgICAgICAgd2Vi
QXNzZW1ibHlDb3VsZG50R2V0RmFzdE1lbW9yeSgpOwogCiAgICAgaWYgKCFpbml0aWFsQnl0ZXMp
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVtb3J5KGluaXRpYWwsIG1heGltdW0sIFdU
Rk1vdmUobm90aWZ5TWVtb3J5UHJlc3N1cmUpLCBXVEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1v
cnkpLCBXVEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJhY2spKSk7Ci0gICAgCi0gICAgdm9pZCogc2xv
d01lbW9yeSA9IEdpZ2FjYWdlOjp0cnlBbGxvY2F0ZVplcm9lZFZpcnR1YWxQYWdlcyhHaWdhY2Fn
ZTo6UHJpbWl0aXZlLCBpbml0aWFsQnl0ZXMpOwotICAgIGlmICghc2xvd01lbW9yeSkgewotICAg
ICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZVBoeXNpY2FsQnl0ZXMoaW5pdGlhbEJ5dGVzKTsKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVtb3J5
KGluaXRpYWwsIG1heGltdW0sIHNoYXJpbmdNb2RlLCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNz
dXJlKSwgV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92ZShncm93U3VjY2Vz
c0NhbGxiYWNrKSkpOworCisgICAgc3dpdGNoIChzaGFyaW5nTW9kZSkgeworICAgIGNhc2UgTWVt
b3J5U2hhcmluZ01vZGU6OkRlZmF1bHQ6IHsKKyAgICAgICAgdm9pZCogc2xvd01lbW9yeSA9IEdp
Z2FjYWdlOjp0cnlBbGxvY2F0ZVplcm9lZFZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6UHJpbWl0aXZl
LCBpbml0aWFsQnl0ZXMpOworICAgICAgICBpZiAoIXNsb3dNZW1vcnkpIHsKKyAgICAgICAgICAg
IG1lbW9yeU1hbmFnZXIoKS5mcmVlUGh5c2ljYWxCeXRlcyhpbml0aWFsQnl0ZXMpOworICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE1lbW9yeTo6
Y3JlYXRlKGFkb3B0UmVmKCpuZXcgTWVtb3J5SGFuZGxlKHNsb3dNZW1vcnksIGluaXRpYWxCeXRl
cywgaW5pdGlhbEJ5dGVzLCBpbml0aWFsLCBtYXhpbXVtLCBzaGFyaW5nTW9kZSwgTWVtb3J5TW9k
ZTo6Qm91bmRzQ2hlY2tpbmcpKSwgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1v
dmUoc3luY1RyeVRvUmVjbGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykp
OwogICAgIH0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lbW9yeShzbG93TWVtb3J5LCBpbml0
aWFsLCBtYXhpbXVtLCBpbml0aWFsQnl0ZXMsIE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nLCBX
VEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJlKSwgV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVt
b3J5KSwgV1RGTW92ZShncm93U3VjY2Vzc0NhbGxiYWNrKSkpOwotfQorICAgIGNhc2UgTWVtb3J5
U2hhcmluZ01vZGU6OlNoYXJlZDogeworICAgICAgICBjaGFyKiBzbG93TWVtb3J5ID0gbnVsbHB0
cjsKKyAgICAgICAgdHJ5QWxsb2NhdGUoCisgICAgICAgICAgICBbJl0gKCkgLT4gTWVtb3J5UmVz
dWx0OjpLaW5kIHsKKyAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1lbW9yeU1hbmFnZXIo
KS50cnlBbGxvY2F0ZUdyb3dhYmxlQm91bmRzQ2hlY2tpbmdNZW1vcnkobWF4aW11bUJ5dGVzKTsK
KyAgICAgICAgICAgICAgICBzbG93TWVtb3J5ID0gYml0d2lzZV9jYXN0PGNoYXIqPihyZXN1bHQu
YmFzZVB0cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5raW5kOworICAgICAgICAg
ICAgfSwgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpOworICAg
ICAgICBpZiAoIXNsb3dNZW1vcnkpIHsKKyAgICAgICAgICAgIG1lbW9yeU1hbmFnZXIoKS5mcmVl
UGh5c2ljYWxCeXRlcyhpbml0aWFsQnl0ZXMpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIH0KIAotTWVtb3J5Ojp+TWVtb3J5KCkKLXsKLSAgICBpZiAobV9tZW1vcnkpIHsK
LSAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVQaHlzaWNhbEJ5dGVzKG1fc2l6ZSk7Ci0gICAg
ICAgIHN3aXRjaCAobV9tb2RlKSB7Ci0gICAgICAgIGNhc2UgTWVtb3J5TW9kZTo6U2lnbmFsaW5n
OgotICAgICAgICAgICAgaWYgKG1wcm90ZWN0KG1lbW9yeSgpLCBNZW1vcnk6OmZhc3RNYXBwZWRC
eXRlcygpLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKSkgewotICAgICAgICAgICAgICAgIGRhdGFM
b2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKLSAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVGYXN0TWVtb3J5KG1lbW9yeSgpKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nOgot
ICAgICAgICAgICAgR2lnYWNhZ2U6OmZyZWVWaXJ0dWFsUGFnZXMoR2lnYWNhZ2U6OlByaW1pdGl2
ZSwgbWVtb3J5KCksIG1fc2l6ZSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKG1w
cm90ZWN0KHNsb3dNZW1vcnkgKyBpbml0aWFsQnl0ZXMsIG1heGltdW1CeXRlcyAtIGluaXRpYWxC
eXRlcywgUFJPVF9OT05FKSkgeworICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVk
OiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQorCisgICAgICAgIHJldHVybiBNZW1vcnk6OmNyZWF0
ZShhZG9wdFJlZigqbmV3IE1lbW9yeUhhbmRsZShzbG93TWVtb3J5LCBpbml0aWFsQnl0ZXMsIG1h
eGltdW1CeXRlcywgaW5pdGlhbCwgbWF4aW11bSwgc2hhcmluZ01vZGUsIE1lbW9yeU1vZGU6OkJv
dW5kc0NoZWNraW5nKSksIFdURk1vdmUobm90aWZ5TWVtb3J5UHJlc3N1cmUpLCBXVEZNb3ZlKHN5
bmNUcnlUb1JlY2xhaW1NZW1vcnkpLCBXVEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJhY2spKTsKICAg
ICB9CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKK01lbW9yeTo6fk1lbW9yeSgpID0gZGVmYXVsdDsKKwogc2l6ZV90IE1l
bW9yeTo6ZmFzdE1hcHBlZFJlZHpvbmVCeXRlcygpCiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PHNpemVfdD4oUGFnZUNvdW50OjpwYWdlU2l6ZSkgKiBPcHRpb25zOjp3ZWJBc3NlbWJseUZhc3RN
ZW1vcnlSZWR6b25lUGFnZXMoKTsKQEAgLTM1OSwxOCArNDUyLDc3IEBAIHNpemVfdCBNZW1vcnk6
OmZhc3RNYXBwZWRCeXRlcygpCiAgICAgcmV0dXJuIChzdGF0aWNfY2FzdDxzaXplX3Q+KDEpIDw8
IDMyKSArIGZhc3RNYXBwZWRSZWR6b25lQnl0ZXMoKTsKIH0KIAotYm9vbCBNZW1vcnk6OmFkZHJl
c3NJc0luQWN0aXZlRmFzdE1lbW9yeSh2b2lkKiBhZGRyZXNzKQorYm9vbCBNZW1vcnk6OmFkZHJl
c3NJc0luQWN0aXZlR3Jvd2FibGVNZW1vcnkodm9pZCogYWRkcmVzcykKIHsKLSAgICByZXR1cm4g
bWVtb3J5TWFuYWdlcigpLmlzQWRkcmVzc0luRmFzdE1lbW9yeShhZGRyZXNzKTsKKyAgICByZXR1
cm4gbWVtb3J5TWFuYWdlcigpLmlzQWRkcmVzc0luR3Jvd2FibGVNZW1vcnkoYWRkcmVzcyk7CiB9
CiAKLUV4cGVjdGVkPFBhZ2VDb3VudCwgTWVtb3J5OjpHcm93RmFpbFJlYXNvbj4gTWVtb3J5Ojpn
cm93KFBhZ2VDb3VudCBkZWx0YSkKK0V4cGVjdGVkPFBhZ2VDb3VudCwgTWVtb3J5OjpHcm93RmFp
bFJlYXNvbj4gTWVtb3J5Ojpncm93U2hhcmVkKFBhZ2VDb3VudCBkZWx0YSkKIHsKLSAgICBjb25z
dCBXYXNtOjpQYWdlQ291bnQgb2xkUGFnZUNvdW50ID0gc2l6ZUluUGFnZXMoKTsKKyAgICBXYXNt
OjpQYWdlQ291bnQgb2xkUGFnZUNvdW50OworICAgIFdhc206OlBhZ2VDb3VudCBuZXdQYWdlQ291
bnQ7CisgICAgYXV0byByZXN1bHQgPSAoWyZdKCkgLT4gRXhwZWN0ZWQ8UGFnZUNvdW50LCBNZW1v
cnk6Okdyb3dGYWlsUmVhc29uPiB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9o
YW5kbGUtPmxvY2soKSk7CisKKyAgICAgICAgb2xkUGFnZUNvdW50ID0gc2l6ZUluUGFnZXMoKTsK
KyAgICAgICAgbmV3UGFnZUNvdW50ID0gb2xkUGFnZUNvdW50ICsgZGVsdGE7CisgICAgICAgIGlm
ICghbmV3UGFnZUNvdW50IHx8ICFuZXdQYWdlQ291bnQuaXNWYWxpZCgpKQorICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpJbnZhbGlkR3Jvd1NpemUpOwor
ICAgICAgICBpZiAobmV3UGFnZUNvdW50LmJ5dGVzKCkgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUp
CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoR3Jvd0ZhaWxSZWFzb246Ok91dE9m
TWVtb3J5KTsKKworICAgICAgICBpZiAoIWRlbHRhLnBhZ2VDb3VudCgpKQorICAgICAgICAgICAg
cmV0dXJuIG9sZFBhZ2VDb3VudDsKKworICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiTWVt
b3J5Ojpncm93KCIsIGRlbHRhLCAiKSB0byAiLCBuZXdQYWdlQ291bnQsICIgZnJvbSAiLCAqdGhp
cyk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5ld1BhZ2VDb3VudCA+IFBhZ2VDb3VudDo6ZnJv
bUJ5dGVzKHNpemUoKSkpOworCisgICAgICAgIGlmIChtYXhpbXVtKCkgJiYgbmV3UGFnZUNvdW50
ID4gbWF4aW11bSgpKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEdyb3dGYWls
UmVhc29uOjpXb3VsZEV4Y2VlZE1heGltdW0pOworCisgICAgICAgIHNpemVfdCBkZXNpcmVkU2l6
ZSA9IG5ld1BhZ2VDb3VudC5ieXRlcygpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChkZXNpcmVk
U2l6ZSA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChk
ZXNpcmVkU2l6ZSA+IHNpemUoKSk7CisKKyAgICAgICAgLy8gSWYgdGhlIG1lbW9yeSBpcyBNZW1v
cnlTaGFyaW5nTW9kZTo6U2hhcmVkLCB3ZSBhbHJlYWR5IGFsbG9jYXRlZCBlbm91Z2ggdmlydHVh
bCBhZGRyZXNzIHNwYWNlIGV2ZW4gaWYgdGhlIG1lbW9yeSBpcyBib3VuZC1jaGVja2luZyBtb2Rl
LiBXZSBwZXJmb3JtIG1wcm90ZWN0IHRvIGV4dGVuZC4KKyAgICAgICAgc2l6ZV90IGV4dHJhQnl0
ZXMgPSBkZXNpcmVkU2l6ZSAtIHNpemUoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXh0cmFC
eXRlcyk7CisgICAgICAgIGJvb2wgYWxsb2NhdGlvblN1Y2Nlc3MgPSB0cnlBbGxvY2F0ZSgKKyAg
ICAgICAgICAgIFsmXSAoKSAtPiBNZW1vcnlSZXN1bHQ6OktpbmQgeworICAgICAgICAgICAgICAg
IHJldHVybiBtZW1vcnlNYW5hZ2VyKCkudHJ5QWxsb2NhdGVQaHlzaWNhbEJ5dGVzKGV4dHJhQnl0
ZXMpOworICAgICAgICAgICAgfSwgW10oV2FzbTo6TWVtb3J5OjpOb3RpZnlQcmVzc3VyZSkgeyB9
LCBbXShNZW1vcnk6OlN5bmNUcnlUb1JlY2xhaW0pIHsgfSk7CisgICAgICAgIGlmICghYWxsb2Nh
dGlvblN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoR3Jvd0ZhaWxS
ZWFzb246Ok91dE9mTWVtb3J5KTsKKworICAgICAgICBSRUxFQVNFX0FTU0VSVChtZW1vcnkoKSk7
CisKKyAgICAgICAgLy8gU2lnbmFsaW5nIG1lbW9yeSBtdXN0IGhhdmUgYmVlbiBwcmUtYWxsb2Nh
dGVkIHZpcnR1YWxseS4KKyAgICAgICAgdWludDhfdCogc3RhcnRBZGRyZXNzID0gc3RhdGljX2Nh
c3Q8dWludDhfdCo+KG1lbW9yeSgpKSArIHNpemUoKTsKIAorICAgICAgICBkYXRhTG9nTG5JZih2
ZXJib3NlLCAiTWFya2luZyBXZWJBc3NlbWJseSBtZW1vcnkncyAiLCBSYXdQb2ludGVyKG1lbW9y
eSgpKSwgIiBhcyByZWFkK3dyaXRlIGluIHJhbmdlIFsiLCBSYXdQb2ludGVyKHN0YXJ0QWRkcmVz
cyksICIsICIsIFJhd1BvaW50ZXIoc3RhcnRBZGRyZXNzICsgZXh0cmFCeXRlcyksICIpIik7Cisg
ICAgICAgIGlmIChtcHJvdGVjdChzdGFydEFkZHJlc3MsIGV4dHJhQnl0ZXMsIFBST1RfUkVBRCB8
IFBST1RfV1JJVEUpKSB7CisgICAgICAgICAgICBkYXRhTG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIs
IHN0cmVycm9yKGVycm5vKSwgIlxuIik7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsg
Ly8gRW5zdXJlIHN0b3JpbmcgInNpemUiIGhhcHBlbnMgYWZ0ZXIgbXByb3RlY3QgaXMgZG9uZS4K
KyAgICAgICAgbV9oYW5kbGUtPmdyb3dUb1NpemUoZGVzaXJlZFNpemUpOworICAgICAgICByZXR1
cm4gb2xkUGFnZUNvdW50OworICAgIH0oKSk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgbV9n
cm93U3VjY2Vzc0NhbGxiYWNrKEdyb3dTdWNjZXNzVGFnLCBvbGRQYWdlQ291bnQsIG5ld1BhZ2VD
b3VudCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworRXhwZWN0ZWQ8UGFnZUNvdW50LCBNZW1v
cnk6Okdyb3dGYWlsUmVhc29uPiBNZW1vcnk6Omdyb3coUGFnZUNvdW50IGRlbHRhKQorewogICAg
IGlmICghZGVsdGEuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoR3Jv
d0ZhaWxSZWFzb246OkludmFsaWREZWx0YSk7Ci0gICAgCisKKyAgICBpZiAoc2hhcmluZ01vZGUo
KSA9PSBNZW1vcnlTaGFyaW5nTW9kZTo6U2hhcmVkKQorICAgICAgICByZXR1cm4gZ3Jvd1NoYXJl
ZChkZWx0YSk7CisKKyAgICBjb25zdCBXYXNtOjpQYWdlQ291bnQgb2xkUGFnZUNvdW50ID0gc2l6
ZUluUGFnZXMoKTsKICAgICBjb25zdCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50ID0gb2xk
UGFnZUNvdW50ICsgZGVsdGE7CiAgICAgaWYgKCFuZXdQYWdlQ291bnQgfHwgIW5ld1BhZ2VDb3Vu
dC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChHcm93RmFpbFJlYXNv
bjo6SW52YWxpZEdyb3dTaXplKTsKQEAgLTM5MSw1MiArNTQzLDU4IEBAIEV4cGVjdGVkPFBhZ2VD
b3VudCwgTWVtb3J5OjpHcm93RmFpbFJlYXNvbj4gTWVtb3J5Ojpncm93KFBhZ2VDb3VudCBkZWx0
YSkKICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MoKTsKIAogICAgIGRhdGFMb2dMbklmKHZlcmJvc2Us
ICJNZW1vcnk6Omdyb3coIiwgZGVsdGEsICIpIHRvICIsIG5ld1BhZ2VDb3VudCwgIiBmcm9tICIs
ICp0aGlzKTsKLSAgICBSRUxFQVNFX0FTU0VSVChuZXdQYWdlQ291bnQgPiBQYWdlQ291bnQ6OmZy
b21CeXRlcyhtX3NpemUpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChuZXdQYWdlQ291bnQgPiBQYWdl
Q291bnQ6OmZyb21CeXRlcyhzaXplKCkpKTsKIAogICAgIGlmIChtYXhpbXVtKCkgJiYgbmV3UGFn
ZUNvdW50ID4gbWF4aW11bSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoR3Jvd0Zh
aWxSZWFzb246OldvdWxkRXhjZWVkTWF4aW11bSk7CiAKICAgICBzaXplX3QgZGVzaXJlZFNpemUg
PSBuZXdQYWdlQ291bnQuYnl0ZXMoKTsKICAgICBSRUxFQVNFX0FTU0VSVChkZXNpcmVkU2l6ZSA8
PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwotICAgIFJFTEVBU0VfQVNTRVJUKGRlc2lyZWRTaXpl
ID4gbV9zaXplKTsKLSAgICBzaXplX3QgZXh0cmFCeXRlcyA9IGRlc2lyZWRTaXplIC0gbV9zaXpl
OwotICAgIFJFTEVBU0VfQVNTRVJUKGV4dHJhQnl0ZXMpOwotICAgIGJvb2wgYWxsb2NhdGlvblN1
Y2Nlc3MgPSB0cnlBbGxvY2F0ZSgKLSAgICAgICAgWyZdICgpIC0+IE1lbW9yeVJlc3VsdDo6S2lu
ZCB7Ci0gICAgICAgICAgICByZXR1cm4gbWVtb3J5TWFuYWdlcigpLnRyeUFsbG9jYXRlUGh5c2lj
YWxCeXRlcyhleHRyYUJ5dGVzKTsKLSAgICAgICAgfSwgbV9ub3RpZnlNZW1vcnlQcmVzc3VyZSwg
bV9zeW5jVHJ5VG9SZWNsYWltTWVtb3J5KTsKLSAgICBpZiAoIWFsbG9jYXRpb25TdWNjZXNzKQot
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoR3Jvd0ZhaWxSZWFzb246Ok91dE9mTWVtb3J5
KTsKLQorICAgIFJFTEVBU0VfQVNTRVJUKGRlc2lyZWRTaXplID4gc2l6ZSgpKTsKICAgICBzd2l0
Y2ggKG1vZGUoKSkgewogICAgIGNhc2UgTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmc6IHsKKyAg
ICAgICAgYm9vbCBhbGxvY2F0aW9uU3VjY2VzcyA9IHRyeUFsbG9jYXRlKAorICAgICAgICAgICAg
WyZdICgpIC0+IE1lbW9yeVJlc3VsdDo6S2luZCB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1l
bW9yeU1hbmFnZXIoKS50cnlBbGxvY2F0ZVBoeXNpY2FsQnl0ZXMoZGVzaXJlZFNpemUpOworICAg
ICAgICAgICAgfSwgbV9ub3RpZnlNZW1vcnlQcmVzc3VyZSwgbV9zeW5jVHJ5VG9SZWNsYWltTWVt
b3J5KTsKKyAgICAgICAgaWYgKCFhbGxvY2F0aW9uU3VjY2VzcykKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChHcm93RmFpbFJlYXNvbjo6T3V0T2ZNZW1vcnkpOworCiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1heGltdW0oKS5ieXRlcygpICE9IDApOwogCiAgICAgICAgIHZvaWQq
IG5ld01lbW9yeSA9IEdpZ2FjYWdlOjp0cnlBbGxvY2F0ZVplcm9lZFZpcnR1YWxQYWdlcyhHaWdh
Y2FnZTo6UHJpbWl0aXZlLCBkZXNpcmVkU2l6ZSk7CiAgICAgICAgIGlmICghbmV3TWVtb3J5KQog
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpPdXRPZk1l
bW9yeSk7CiAKLSAgICAgICAgbWVtY3B5KG5ld01lbW9yeSwgbWVtb3J5KCksIG1fc2l6ZSk7Ci0g
ICAgICAgIGlmIChtX21lbW9yeSkKLSAgICAgICAgICAgIEdpZ2FjYWdlOjpmcmVlVmlydHVhbFBh
Z2VzKEdpZ2FjYWdlOjpQcmltaXRpdmUsIG1lbW9yeSgpLCBtX3NpemUpOwotICAgICAgICBtX21l
bW9yeSA9IENhZ2VkTWVtb3J5KG5ld01lbW9yeSwgZGVzaXJlZFNpemUpOwotICAgICAgICBtX21h
cHBlZENhcGFjaXR5ID0gZGVzaXJlZFNpemU7Ci0gICAgICAgIG1fc2l6ZSA9IGRlc2lyZWRTaXpl
OworICAgICAgICBtZW1jcHkobmV3TWVtb3J5LCBtZW1vcnkoKSwgc2l6ZSgpKTsKKyAgICAgICAg
YXV0byBuZXdIYW5kbGUgPSBhZG9wdFJlZigqbmV3IE1lbW9yeUhhbmRsZShuZXdNZW1vcnksIGRl
c2lyZWRTaXplLCBkZXNpcmVkU2l6ZSwgaW5pdGlhbCgpLCBtYXhpbXVtKCksIHNoYXJpbmdNb2Rl
KCksIE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSk7CisgICAgICAgIG1faGFuZGxlID0gV1RG
TW92ZShuZXdIYW5kbGUpOworCiAgICAgICAgIEFTU0VSVChtZW1vcnkoKSA9PSBuZXdNZW1vcnkp
OwogICAgICAgICByZXR1cm4gc3VjY2VzcygpOwogICAgIH0KICAgICBjYXNlIE1lbW9yeU1vZGU6
OlNpZ25hbGluZzogeworICAgICAgICBzaXplX3QgZXh0cmFCeXRlcyA9IGRlc2lyZWRTaXplIC0g
c2l6ZSgpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChleHRyYUJ5dGVzKTsKKyAgICAgICAgYm9v
bCBhbGxvY2F0aW9uU3VjY2VzcyA9IHRyeUFsbG9jYXRlKAorICAgICAgICAgICAgWyZdICgpIC0+
IE1lbW9yeVJlc3VsdDo6S2luZCB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9yeU1hbmFn
ZXIoKS50cnlBbGxvY2F0ZVBoeXNpY2FsQnl0ZXMoZXh0cmFCeXRlcyk7CisgICAgICAgICAgICB9
LCBtX25vdGlmeU1lbW9yeVByZXNzdXJlLCBtX3N5bmNUcnlUb1JlY2xhaW1NZW1vcnkpOworICAg
ICAgICBpZiAoIWFsbG9jYXRpb25TdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpPdXRPZk1lbW9yeSk7CisKICAgICAgICAgUkVMRUFTRV9B
U1NFUlQobWVtb3J5KCkpOworCiAgICAgICAgIC8vIFNpZ25hbGluZyBtZW1vcnkgbXVzdCBoYXZl
IGJlZW4gcHJlLWFsbG9jYXRlZCB2aXJ0dWFsbHkuCi0gICAgICAgIHVpbnQ4X3QqIHN0YXJ0QWRk
cmVzcyA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtZW1vcnkoKSkgKyBtX3NpemU7CisgICAgICAg
IHVpbnQ4X3QqIHN0YXJ0QWRkcmVzcyA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtZW1vcnkoKSkg
KyBzaXplKCk7CiAgICAgICAgIAogICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiTWFya2lu
ZyBXZWJBc3NlbWJseSBtZW1vcnkncyAiLCBSYXdQb2ludGVyKG1lbW9yeSgpKSwgIiBhcyByZWFk
K3dyaXRlIGluIHJhbmdlIFsiLCBSYXdQb2ludGVyKHN0YXJ0QWRkcmVzcyksICIsICIsIFJhd1Bv
aW50ZXIoc3RhcnRBZGRyZXNzICsgZXh0cmFCeXRlcyksICIpIik7CiAgICAgICAgIGlmIChtcHJv
dGVjdChzdGFydEFkZHJlc3MsIGV4dHJhQnl0ZXMsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpKSB7
CiAgICAgICAgICAgICBkYXRhTG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHN0cmVycm9yKGVycm5v
KSwgIlxuIik7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICB9Ci0gICAgICAgIG1fbWVtb3J5LnJlY2FnZShtX3NpemUsIGRlc2lyZWRTaXplKTsKLSAg
ICAgICAgbV9zaXplID0gZGVzaXJlZFNpemU7CisKKyAgICAgICAgbV9oYW5kbGUtPmdyb3dUb1Np
emUoZGVzaXJlZFNpemUpOwogICAgICAgICByZXR1cm4gc3VjY2VzcygpOwogICAgIH0KICAgICB9
CkBAIC00NTksNyArNjE3LDggQEAgdm9pZCBNZW1vcnk6OnJlZ2lzdGVySW5zdGFuY2UoSW5zdGFu
Y2UqIGluc3RhbmNlKQogCiB2b2lkIE1lbW9yeTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAogewotICAgIG91dC5wcmludCgiTWVtb3J5IGF0ICIsIFJhd1BvaW50ZXIobWVtb3J5KCkpLCAi
LCBzaXplICIsIG1fc2l6ZSwgIkIgY2FwYWNpdHkgIiwgbV9tYXBwZWRDYXBhY2l0eSwgIkIsIGlu
aXRpYWwgIiwgbV9pbml0aWFsLCAiIG1heGltdW0gIiwgbV9tYXhpbXVtLCAiIG1vZGUgIiwgbWFr
ZVN0cmluZyhtX21vZGUpKTsKKyAgICBhdXRvIGhhbmRsZSA9IG1faGFuZGxlLmNvcHlSZWYoKTsK
KyAgICBvdXQucHJpbnQoIk1lbW9yeSBhdCAiLCBSYXdQb2ludGVyKGhhbmRsZS0+bWVtb3J5KCkp
LCAiLCBzaXplICIsIGhhbmRsZS0+c2l6ZSgpLCAiQiBjYXBhY2l0eSAiLCBoYW5kbGUtPm1hcHBl
ZENhcGFjaXR5KCksICJCLCBpbml0aWFsICIsIGhhbmRsZS0+aW5pdGlhbCgpLCAiIG1heGltdW0g
IiwgaGFuZGxlLT5tYXhpbXVtKCksICIgbW9kZSAiLCBtYWtlU3RyaW5nKGhhbmRsZS0+bW9kZSgp
KSwgIiBzaGFyaW5nTW9kZSAiLCBtYWtlU3RyaW5nKGhhbmRsZS0+c2hhcmluZ01vZGUoKSkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21NZW1vcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1v
cnkuaAppbmRleCA5NjcwODM4ZjE3MTFmODJlN2JiNGUxNWJmOGI1ZGQzYjg0ODI2YjUxLi4wMWUy
ZDQ2ZjBhNDY2ZmU4ZjdkMmZhZTlmMjg3NzE0ZWNkZmNmZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU1lbW9yeS5oCkBAIC00NCwzOSArNDQsODAgQEAgY2xhc3MgUHJpbnRTdHJl
YW07CiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisK
IG5hbWVzcGFjZSBXYXNtIHsKIAogY2xhc3MgSW5zdGFuY2U7CiAKLWNsYXNzIE1lbW9yeSA6IHB1
YmxpYyBSZWZDb3VudGVkPE1lbW9yeT4geworY2xhc3MgTWVtb3J5SGFuZGxlIGZpbmFsIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1lbW9yeUhhbmRsZT4geworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKE1lbW9yeUhhbmRsZSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Cisg
ICAgZnJpZW5kIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK3B1YmxpYzoKKyAgICBNZW1vcnlIYW5k
bGUodm9pZCosIHNpemVfdCBzaXplLCBzaXplX3QgbWFwcGVkQ2FwYWNpdHksIFBhZ2VDb3VudCBp
bml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgTWVtb3J5U2hhcmluZ01vZGUsIE1lbW9yeU1vZGUp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIH5NZW1vcnlIYW5kbGUoKTsKKworICAgIHZvaWQqIG1l
bW9yeSgpIGNvbnN0IHsgQVNTRVJUKG1fbWVtb3J5LmdldE1heUJlTnVsbChtX21hcHBlZENhcGFj
aXR5KSA9PSBtX21lbW9yeS5nZXRVbnNhZmUoKSk7IHJldHVybiBtX21lbW9yeS5nZXRNYXlCZU51
bGwobV9tYXBwZWRDYXBhY2l0eSk7IH0KKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZTsgfQorICAgIHNpemVfdCBtYXBwZWRDYXBhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWFwcGVkQ2FwYWNpdHk7IH0KKyAgICBQYWdlQ291bnQgaW5pdGlhbCgpIGNvbnN0IHsgcmV0dXJu
IG1faW5pdGlhbDsgfQorICAgIFBhZ2VDb3VudCBtYXhpbXVtKCkgY29uc3QgeyByZXR1cm4gbV9t
YXhpbXVtOyB9CisgICAgTWVtb3J5U2hhcmluZ01vZGUgc2hhcmluZ01vZGUoKSBjb25zdCB7IHJl
dHVybiBtX3NoYXJpbmdNb2RlOyB9CisgICAgTWVtb3J5TW9kZSBtb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9tb2RlOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNpemUoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoTWVtb3J5SGFuZGxlLCBtX3NpemUpOyB9CisgICAgTG9jayYgbG9j
aygpIHsgcmV0dXJuIG1fbG9jazsgfQorCisgICAgdm9pZCBncm93VG9TaXplKHNpemVfdCBzaXpl
KQorICAgIHsKKyAgICAgICAgbV9zaXplID0gc2l6ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
dXNpbmcgQ2FnZWRNZW1vcnkgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0
YWdDYWdlZFB0cj47CisgICAgQ2FnZWRNZW1vcnkgbV9tZW1vcnk7CisgICAgc2l6ZV90IG1fc2l6
ZSB7IDAgfTsKKyAgICBzaXplX3QgbV9tYXBwZWRDYXBhY2l0eSB7IDAgfTsKKyAgICBQYWdlQ291
bnQgbV9pbml0aWFsOworICAgIFBhZ2VDb3VudCBtX21heGltdW07CisgICAgTWVtb3J5U2hhcmlu
Z01vZGUgbV9zaGFyaW5nTW9kZSB7IE1lbW9yeVNoYXJpbmdNb2RlOjpEZWZhdWx0IH07CisgICAg
TWVtb3J5TW9kZSBtX21vZGUgeyBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZyB9OworICAgIExv
Y2sgbV9sb2NrOworfTsKKworY2xhc3MgTWVtb3J5IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8
TWVtb3J5PiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVtb3J5KTsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKKyAgICBmcmllbmQgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogcHVi
bGljOgogICAgIHZvaWQgZHVtcChXVEY6OlByaW50U3RyZWFtJikgY29uc3Q7CiAKLSAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX21lbW9yeTsgfQorICAgIGV4
cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1faGFuZGxlLT5tZW1vcnko
KTsgfQogICAgIAogICAgIGVudW0gTm90aWZ5UHJlc3N1cmUgeyBOb3RpZnlQcmVzc3VyZVRhZyB9
OwogICAgIGVudW0gU3luY1RyeVRvUmVjbGFpbSB7IFN5bmNUcnlUb1JlY2xhaW1UYWcgfTsKICAg
ICBlbnVtIEdyb3dTdWNjZXNzIHsgR3Jvd1N1Y2Nlc3NUYWcgfTsKIAogICAgIHN0YXRpYyBSZWY8
TWVtb3J5PiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUmVmUHRyPE1lbW9yeT4gdHJ5Q3JlYXRlKFBh
Z2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgV1RGOjpGdW5jdGlvbjx2b2lkKE5v
dGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgV1RGOjpGdW5jdGlvbjx2b2lk
KFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdURjo6RnVuY3Rp
b248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNjZXNz
Q2FsbGJhY2spOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8TWVtb3J5PiBjcmVh
dGUoUmVmPE1lbW9yeUhhbmRsZT4mJiwgV1RGOjpGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJl
KT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFN5bmNUcnlUb1Jl
Y2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdURjo6RnVuY3Rpb248dm9pZChHcm93
U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNjZXNzQ2FsbGJhY2spOwor
ICAgIHN0YXRpYyBSZWZQdHI8TWVtb3J5PiB0cnlDcmVhdGUoUGFnZUNvdW50IGluaXRpYWwsIFBh
Z2VDb3VudCBtYXhpbXVtLCBNZW1vcnlTaGFyaW5nTW9kZSwgV1RGOjpGdW5jdGlvbjx2b2lkKE5v
dGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgV1RGOjpGdW5jdGlvbjx2b2lk
KFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdURjo6RnVuY3Rp
b248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNjZXNz
Q2FsbGJhY2spOwogCi0gICAgfk1lbW9yeSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIH5NZW1v
cnkoKTsKIAogICAgIHN0YXRpYyBzaXplX3QgZmFzdE1hcHBlZFJlZHpvbmVCeXRlcygpOwogICAg
IHN0YXRpYyBzaXplX3QgZmFzdE1hcHBlZEJ5dGVzKCk7IC8vIEluY2x1ZGVzIHJlZHpvbmUuCi0g
ICAgc3RhdGljIGJvb2wgYWRkcmVzc0lzSW5BY3RpdmVGYXN0TWVtb3J5KHZvaWQqKTsKLQotICAg
IHZvaWQqIG1lbW9yeSgpIGNvbnN0IHsgQVNTRVJUKG1fbWVtb3J5LmdldE1heUJlTnVsbChzaXpl
KCkpID09IG1fbWVtb3J5LmdldFVuc2FmZSgpKTsgcmV0dXJuIG1fbWVtb3J5LmdldE1heUJlTnVs
bChzaXplKCkpOyB9Ci0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0K
LSAgICBQYWdlQ291bnQgc2l6ZUluUGFnZXMoKSBjb25zdCB7IHJldHVybiBQYWdlQ291bnQ6OmZy
b21CeXRlcyhtX3NpemUpOyB9CisgICAgc3RhdGljIGJvb2wgYWRkcmVzc0lzSW5BY3RpdmVHcm93
YWJsZU1lbW9yeSh2b2lkKik7CiAKLSAgICBQYWdlQ291bnQgaW5pdGlhbCgpIGNvbnN0IHsgcmV0
dXJuIG1faW5pdGlhbDsgfQotICAgIFBhZ2VDb3VudCBtYXhpbXVtKCkgY29uc3QgeyByZXR1cm4g
bV9tYXhpbXVtOyB9CisgICAgdm9pZCogbWVtb3J5KCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUt
Pm1lbW9yeSgpOyB9CisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZS0+
c2l6ZSgpOyB9CisgICAgUGFnZUNvdW50IHNpemVJblBhZ2VzKCkgY29uc3QgeyByZXR1cm4gUGFn
ZUNvdW50Ojpmcm9tQnl0ZXMoc2l6ZSgpKTsgfQorICAgIHNpemVfdCBib3VuZHNDaGVja2luZ1Np
emUoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZS0+bWFwcGVkQ2FwYWNpdHkoKTsgfQorICAgIFBh
Z2VDb3VudCBpbml0aWFsKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUtPmluaXRpYWwoKTsgfQor
ICAgIFBhZ2VDb3VudCBtYXhpbXVtKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUtPm1heGltdW0o
KTsgfQorICAgIE1lbW9yeUhhbmRsZSYgaGFuZGxlKCkgeyByZXR1cm4gbV9oYW5kbGUuZ2V0KCk7
IH0KIAotICAgIE1lbW9yeU1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQorICAg
IE1lbW9yeVNoYXJpbmdNb2RlIHNoYXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUt
PnNoYXJpbmdNb2RlKCk7IH0KKyAgICBNZW1vcnlNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBt
X2hhbmRsZS0+bW9kZSgpOyB9CiAKICAgICBlbnVtIGNsYXNzIEdyb3dGYWlsUmVhc29uIHsKICAg
ICAgICAgSW52YWxpZERlbHRhLApAQCAtODksMjEgKzEzMCwxNiBAQCBjbGFzcyBNZW1vcnkgOiBw
dWJsaWMgUmVmQ291bnRlZDxNZW1vcnk+IHsKIAogICAgIHZvaWQgY2hlY2soKSB7ICBBU1NFUlQo
IWRlbGV0aW9uSGFzQmVndW4oKSk7IH0KIAotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZN
ZW1vcnkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTWVtb3J5LCBtX21lbW9yeSk7IH0KLSAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2l6ZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihNZW1vcnksIG1fc2l6ZSk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSGFuZGxl
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1lbW9yeSwgbV9oYW5kbGUpOyB9CiAKIHByaXZh
dGU6CiAgICAgTWVtb3J5KCk7Ci0gICAgTWVtb3J5KHZvaWQqIG1lbW9yeSwgUGFnZUNvdW50IGlu
aXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBzaXplX3QgbWFwcGVkQ2FwYWNpdHksIE1lbW9yeU1v
ZGUsIFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJl
c3N1cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9S
ZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwg
UGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKTsKLSAgICBNZW1vcnkoUGFnZUNvdW50
IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJl
c3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU3luY1Ry
eVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lk
KEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFj
ayk7CisgICAgTWVtb3J5KFJlZjxNZW1vcnlIYW5kbGU+JiYsIFdURjo6RnVuY3Rpb248dm9pZChO
b3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rpb248dm9p
ZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0
aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3VjY2Vz
c0NhbGxiYWNrKTsKKyAgICBNZW1vcnkoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhp
bXVtLCBNZW1vcnlTaGFyaW5nTW9kZSwgV1RGOjpGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJl
KT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFN5bmNUcnlUb1Jl
Y2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdURjo6RnVuY3Rpb248dm9pZChHcm93
U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNjZXNzQ2FsbGJhY2spOwog
Ci0gICAgdXNpbmcgQ2FnZWRNZW1vcnkgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2
b2lkLCB0YWdDYWdlZFB0cj47Ci0gICAgQ2FnZWRNZW1vcnkgbV9tZW1vcnk7Ci0gICAgc2l6ZV90
IG1fc2l6ZSB7IDAgfTsKLSAgICBQYWdlQ291bnQgbV9pbml0aWFsOwotICAgIFBhZ2VDb3VudCBt
X21heGltdW07Ci0gICAgc2l6ZV90IG1fbWFwcGVkQ2FwYWNpdHkgeyAwIH07Ci0gICAgTWVtb3J5
TW9kZSBtX21vZGUgeyBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZyB9OworICAgIEV4cGVjdGVk
PFBhZ2VDb3VudCwgR3Jvd0ZhaWxSZWFzb24+IGdyb3dTaGFyZWQoUGFnZUNvdW50KTsKKworICAg
IFJlZjxNZW1vcnlIYW5kbGU+IG1faGFuZGxlOwogICAgIFdURjo6RnVuY3Rpb248dm9pZChOb3Rp
ZnlQcmVzc3VyZSk+IG1fbm90aWZ5TWVtb3J5UHJlc3N1cmU7CiAgICAgV1RGOjpGdW5jdGlvbjx2
b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiBtX3N5bmNUcnlUb1JlY2xhaW1NZW1vcnk7CiAgICAgV1RG
OjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+IG1fZ3Jv
d1N1Y2Nlc3NDYWxsYmFjazsKQEAgLTExOSw3ICsxNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIFdhc20gewogY2xhc3MgTWVtb3J5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc2l6ZV90
IG1heEZhc3RNZW1vcnlDb3VudCgpIHsgcmV0dXJuIDA7IH0KLSAgICBzdGF0aWMgYm9vbCBhZGRy
ZXNzSXNJbkFjdGl2ZUZhc3RNZW1vcnkodm9pZCopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3Rh
dGljIGJvb2wgYWRkcmVzc0lzSW5BY3RpdmVHcm93YWJsZU1lbW9yeSh2b2lkKikgeyByZXR1cm4g
ZmFsc2U7IH0KIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcAppbmRleCA2
YjRjMmQxZmQ3Mzg0ZDdkY2EzMDMxOGQ3MmMxZjU2MTE5ZjVmNTYwLi5mMmM2ZmE1MDg5ODhjMGM0
OTA4MDM3MTgzMjE2ODcxZTg1NDBjZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAKQEAgLTQyLDE5ICs0MiwxOSBAQCBj
b25zdCBQaW5uZWRSZWdpc3RlckluZm8mIFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkKICAgICAg
ICAgaWYgKCFDb250ZXh0Ojp1c2VGYXN0VExTKCkpCiAgICAgICAgICAgICArK251bWJlck9mUGlu
bmVkUmVnaXN0ZXJzOwogICAgICAgICBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXIgPSBHUFJJbmZv
OjpyZWdDUzM7Ci0gICAgICAgIEdQUlJlZyBzaXplUmVnaXN0ZXIgPSBHUFJJbmZvOjpyZWdDUzQ7
CisgICAgICAgIEdQUlJlZyBib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciA9IEdQUkluZm86OnJl
Z0NTNDsKICAgICAgICAgR1BSUmVnIHdhc21Db250ZXh0SW5zdGFuY2VQb2ludGVyID0gSW52YWxp
ZEdQUlJlZzsKICAgICAgICAgaWYgKCFDb250ZXh0Ojp1c2VGYXN0VExTKCkpCiAgICAgICAgICAg
ICB3YXNtQ29udGV4dEluc3RhbmNlUG9pbnRlciA9IEdQUkluZm86OnJlZ0NTMDsKIAotICAgICAg
ICBzdGF0aWNQaW5uZWRSZWdpc3RlckluZm8uY29uc3RydWN0KHNpemVSZWdpc3RlciwgYmFzZU1l
bW9yeVBvaW50ZXIsIHdhc21Db250ZXh0SW5zdGFuY2VQb2ludGVyKTsKKyAgICAgICAgc3RhdGlj
UGlubmVkUmVnaXN0ZXJJbmZvLmNvbnN0cnVjdChib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlciwg
YmFzZU1lbW9yeVBvaW50ZXIsIHdhc21Db250ZXh0SW5zdGFuY2VQb2ludGVyKTsKICAgICB9KTsK
IAogICAgIHJldHVybiBzdGF0aWNQaW5uZWRSZWdpc3RlckluZm8uZ2V0KCk7CiB9CiAKLVBpbm5l
ZFJlZ2lzdGVySW5mbzo6UGlubmVkUmVnaXN0ZXJJbmZvKEdQUlJlZyBzaXplUmVnaXN0ZXIsIEdQ
UlJlZyBiYXNlTWVtb3J5UG9pbnRlciwgR1BSUmVnIHdhc21Db250ZXh0SW5zdGFuY2VQb2ludGVy
KQotICAgIDogc2l6ZVJlZ2lzdGVyKHNpemVSZWdpc3RlcikKK1Bpbm5lZFJlZ2lzdGVySW5mbzo6
UGlubmVkUmVnaXN0ZXJJbmZvKEdQUlJlZyBib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciwgR1BS
UmVnIGJhc2VNZW1vcnlQb2ludGVyLCBHUFJSZWcgd2FzbUNvbnRleHRJbnN0YW5jZVBvaW50ZXIp
CisgICAgOiBib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcihib3VuZHNDaGVja2luZ1NpemVSZWdp
c3RlcikKICAgICAsIGJhc2VNZW1vcnlQb2ludGVyKGJhc2VNZW1vcnlQb2ludGVyKQogICAgICwg
d2FzbUNvbnRleHRJbnN0YW5jZVBvaW50ZXIod2FzbUNvbnRleHRJbnN0YW5jZVBvaW50ZXIpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3Jt
YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlv
bi5oCmluZGV4IDRiOGVmOGU4YmM3YWM3ZWZjOWE3OTk0OTRlMjY4OTFmYThkZDYyOWYuLjIzYTg2
NTMwYmFlMTBmZGY3ZTBkNDJlMzVhYjkwNzdiYjczZGY2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oCkBAIC0zOSw3ICszOSw3
IEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCiBzdHJ1Y3QgUGlubmVkU2l6
ZVJlZ2lzdGVySW5mbyB7Ci0gICAgR1BSUmVnIHNpemVSZWdpc3RlcjsKKyAgICBHUFJSZWcgYm91
bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXI7CiAgICAgdW5zaWduZWQgc2l6ZU9mZnNldDsKIH07CiAK
QEAgLTU2LDExICs1NiwxMSBAQCBjbGFzcyBQaW5uZWRSZWdpc3RlckluZm8gewogICAgICAgICBp
ZiAod2FzbUNvbnRleHRJbnN0YW5jZVBvaW50ZXIgIT0gSW52YWxpZEdQUlJlZykKICAgICAgICAg
ICAgIHJlc3VsdC5zZXQod2FzbUNvbnRleHRJbnN0YW5jZVBvaW50ZXIpOwogICAgICAgICBpZiAo
bW9kZSAhPSBNZW1vcnlNb2RlOjpTaWduYWxpbmcpCi0gICAgICAgICAgICByZXN1bHQuc2V0KHNp
emVSZWdpc3Rlcik7CisgICAgICAgICAgICByZXN1bHQuc2V0KGJvdW5kc0NoZWNraW5nU2l6ZVJl
Z2lzdGVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBHUFJSZWcgc2l6
ZVJlZ2lzdGVyOworICAgIEdQUlJlZyBib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlcjsKICAgICBH
UFJSZWcgYmFzZU1lbW9yeVBvaW50ZXI7CiAgICAgR1BSUmVnIHdhc21Db250ZXh0SW5zdGFuY2VQ
b2ludGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21N
ZW1vcnlNb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlNb2Rl
LmNwcAppbmRleCBiMWJjOTg1ZGQ3NmJiZmZiNWQyYmI1YTNkMTA4YzA2N2E0NzM3NzJkLi45YWQ4
ZjgwYjZhYTIyYmZmMDMyYmRkNDZkMTc4NmVmY2RlZjNjYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5TW9kZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeU1vZGUuY3BwCkBAIC00Miw2ICs0MiwxNiBAQCBjb25z
dCBjaGFyKiBtYWtlU3RyaW5nKE1lbW9yeU1vZGUgbW9kZSkKICAgICByZXR1cm4gIiI7CiB9CiAK
K2NvbnN0IGNoYXIqIG1ha2VTdHJpbmcoTWVtb3J5U2hhcmluZ01vZGUgc2hhcmluZ01vZGUpCit7
CisgICAgc3dpdGNoIChzaGFyaW5nTW9kZSkgeworICAgIGNhc2UgTWVtb3J5U2hhcmluZ01vZGU6
OkRlZmF1bHQ6IHJldHVybiAiRGVmYXVsdCI7CisgICAgY2FzZSBNZW1vcnlTaGFyaW5nTW9kZTo6
U2hhcmVkOiByZXR1cm4gIlNoYXJlZCI7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuICIiOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2Fz
bQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeU1vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21NZW1vcnlNb2RlLmgKaW5kZXggYzAzODc0NmQ2MWQ0MmE5NTNjY2Y0YjVkMGZi
MjA3NWU5MjY1NDFmOC4uNTFiMjEzMzZjODk0NmJkZWI4N2NmMTM5NWFkOTk3NTMxMzUxNTgyOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeU1vZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5TW9kZS5oCkBAIC00MCw2
ICs0MCwxMyBAQCBlbnVtIGNsYXNzIE1lbW9yeU1vZGUgOiB1aW50OF90IHsKIHN0YXRpYyBjb25z
dGV4cHIgc2l6ZV90IE51bWJlck9mTWVtb3J5TW9kZXMgPSAyOwogSlNfRVhQT1JUX1BSSVZBVEUg
Y29uc3QgY2hhciogbWFrZVN0cmluZyhNZW1vcnlNb2RlKTsKIAorZW51bSBjbGFzcyBNZW1vcnlT
aGFyaW5nTW9kZSA6IHVpbnQ4X3QgeworICAgIERlZmF1bHQsCisgICAgU2hhcmVkLAorfTsKKwor
SlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgY2hhciogbWFrZVN0cmluZyhNZW1vcnlTaGFyaW5nTW9k
ZSk7CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VC
QVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1Rv
V2FzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKaW5k
ZXggZDhkMTUyMTRkNDBmMGE4NWMzMWYyYTJiMjkyZjgzNWQzZjM2OWQ2Ni4uYmU5NDg3NGE1YTRi
NDU3ZDIzMmVmZDg4ZDc3OWQxYmIzZDliM2ZkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTVG9XYXNtLmNwcApAQCAtMjIxLDcgKzIyMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJ
bnRlcm5hbEZ1bmN0aW9uPiBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0CiAKICAgICBpZiAoISFpbmZvLm1lbW9yeSkgewogICAgICAgICBHUFJSZWcgYmFzZU1l
bW9yeSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7Ci0gICAgICAgIEdQUlJlZyBzY3Jh
dGNoT3JTaXplID0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCkucHJvbG9ndWVTY3JhdGNoR1BSc1sw
XTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSA9IHdhc21DYWxs
aW5nQ29udmVudGlvbigpLnByb2xvZ3VlU2NyYXRjaEdQUnNbMF07CiAKICAgICAgICAgaWYgKENv
bnRleHQ6OnVzZUZhc3RUTFMoKSkKICAgICAgICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHRJbnN0
YW5jZShiYXNlTWVtb3J5KTsKQEAgLTIyOSwxNSArMjI5LDE1IEBAIHN0ZDo6dW5pcXVlX3B0cjxJ
bnRlcm5hbEZ1bmN0aW9uPiBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0CiAgICAgICAgIEdQUlJlZyBjdXJyZW50SW5zdGFuY2VHUFIgPSBDb250ZXh0Ojp1c2VG
YXN0VExTKCkgPyBiYXNlTWVtb3J5IDogd2FzbUNvbnRleHRJbnN0YW5jZUdQUjsKICAgICAgICAg
aWYgKGlzQVJNNjRFKCkpIHsKICAgICAgICAgICAgIGlmIChtb2RlICE9IFdhc206Ok1lbW9yeU1v
ZGU6OlNpZ25hbGluZykKLSAgICAgICAgICAgICAgICBzY3JhdGNoT3JTaXplID0gcGlubmVkUmVn
cy5zaXplUmVnaXN0ZXI7Ci0gICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoY3VycmVudEluc3RhbmNlR1BSLCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRN
ZW1vcnlTaXplKCkpLCBzY3JhdGNoT3JTaXplKTsKKyAgICAgICAgICAgICAgICBzY3JhdGNoT3JC
b3VuZHNDaGVja2luZ1NpemUgPSBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVy
OworICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGN1cnJlbnRJ
bnN0YW5jZUdQUiwgV2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdT
aXplKCkpLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgaWYgKG1vZGUgIT0gV2FzbTo6TWVtb3J5TW9kZTo6U2lnbmFsaW5nKQotICAg
ICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjdXJyZW50SW5z
dGFuY2VHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBp
bm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoY3VycmVudEluc3RhbmNlR1BSLCBXYXNtOjpJbnN0YW5jZTo6b2Zm
c2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSksIHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tp
bmdTaXplUmVnaXN0ZXIpOwogICAgICAgICB9CiAKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKGN1cnJlbnRJbnN0YW5jZUdQUiwgV2FzbTo6SW5zdGFuY2U6Om9mZnNl
dE9mQ2FjaGVkTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKLSAgICAgICAgaml0LmNhZ2VDb25kaXRp
b25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHNjcmF0Y2hPclNpemUsIHNj
cmF0Y2hPclNpemUpOworICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlBy
aW1pdGl2ZSwgYmFzZU1lbW9yeSwgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplLCBzY3JhdGNo
T3JCb3VuZHNDaGVja2luZ1NpemUpOwogICAgIH0KIAogICAgIENDYWxsSGVscGVyczo6Q2FsbCBj
YWxsID0gaml0LnRocmVhZFNhZmVQYXRjaGFibGVOZWFyQ2FsbCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKaW5k
ZXggNjY5NjFjMjMyYTRlYTRlNDc0ZjY3NzM5MzIzMmNkMWVhMmVjNGM1OS4uZTQ5ZmM2OTI1YTk5
NWU1ZTBhZjU5YmVmM2U2MDIwZmJkNDAzYmEwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCkBAIC0yOTEsNyAr
MjkxLDcgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnRy
eUNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KgogICAgICAgICAgICAgYXV0byoganNNZW1v
cnkgPSBKU1dlYkFzc2VtYmx5TWVtb3J5Ojp0cnlDcmVhdGUoZ2xvYmFsT2JqZWN0LCB2bSwgZ2xv
YmFsT2JqZWN0LT53ZWJBc3NlbWJseU1lbW9yeVN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgbnVsbHB0cik7CiAKLSAgICAgICAgICAgIFJl
ZlB0cjxXYXNtOjpNZW1vcnk+IG1lbW9yeSA9IFdhc206Ok1lbW9yeTo6dHJ5Q3JlYXRlKG1vZHVs
ZUluZm9ybWF0aW9uLm1lbW9yeS5pbml0aWFsKCksIG1vZHVsZUluZm9ybWF0aW9uLm1lbW9yeS5t
YXhpbXVtKCksCisgICAgICAgICAgICBSZWZQdHI8V2FzbTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNt
OjpNZW1vcnk6OnRyeUNyZWF0ZShtb2R1bGVJbmZvcm1hdGlvbi5tZW1vcnkuaW5pdGlhbCgpLCBt
b2R1bGVJbmZvcm1hdGlvbi5tZW1vcnkubWF4aW11bSgpLCBXYXNtOjpNZW1vcnlTaGFyaW5nTW9k
ZTo6RGVmYXVsdCwKICAgICAgICAgICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpOb3RpZnlQ
cmVzc3VyZSkgeyB2bS5oZWFwLmNvbGxlY3RBc3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOyB9
LAogICAgICAgICAgICAgICAgIFsmdm1dIChXYXNtOjpNZW1vcnk6OlN5bmNUcnlUb1JlY2xhaW0p
IHsgdm0uaGVhcC5jb2xsZWN0U3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOyB9LAogICAgICAg
ICAgICAgICAgIFsmdm0sIGpzTWVtb3J5XSAoV2FzbTo6TWVtb3J5OjpHcm93U3VjY2VzcywgV2Fz
bTo6UGFnZUNvdW50IG9sZFBhZ2VDb3VudCwgV2FzbTo6UGFnZUNvdW50IG5ld1BhZ2VDb3VudCkg
eyBqc01lbW9yeS0+Z3Jvd1N1Y2Nlc3NDYWxsYmFjayh2bSwgb2xkUGFnZUNvdW50LCBuZXdQYWdl
Q291bnQpOyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlNZW1vcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseU1lbW9yeS5jcHAKaW5kZXggZGZiMDI3MDMxNjMyZTAzYmUzZjM5YjU4Zjk4YjM2
ZTgyZjcyNjIzZi4uZjdhYzY0NDk4MjFiZjEwN2ExNGY3NDhkMDEyZDFmMjljN2I3M2U4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9y
eS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1l
bW9yeS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCiAj
aW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC03MiwxNyArNzMsMzQgQEAgSlNXZWJBc3NlbWJseU1l
bW9yeTo6SlNXZWJBc3NlbWJseU1lbW9yeShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ewogfQogCi1KU0FycmF5QnVmZmVyKiBKU1dlYkFzc2VtYmx5TWVtb3J5OjpidWZmZXIoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNBcnJheUJ1ZmZlciogSlNXZWJBc3Nl
bWJseU1lbW9yeTo6YnVmZmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAg
aWYgKG1fYnVmZmVyV3JhcHBlcikKLSAgICAgICAgcmV0dXJuIG1fYnVmZmVyV3JhcHBlci5nZXQo
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiB3cmFwcGVyID0gbV9idWZm
ZXJXcmFwcGVyLmdldCgpOworICAgIGlmICh3cmFwcGVyKSB7CisgICAgICAgIGlmIChtX21lbW9y
eS0+c2hhcmluZ01vZGUoKSA9PSBXYXNtOjpNZW1vcnlTaGFyaW5nTW9kZTo6RGVmYXVsdCkKKyAg
ICAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCi0gICAgLy8gV2UgY2FuJ3QgdXNlIGEgcmVmIGhl
cmUgc2luY2UgaXQgZG9lc24ndCBoYXZlIGEgY29weSBjb25zdHJ1Y3Rvci4uLgotICAgIFJlZjxX
YXNtOjpNZW1vcnk+IHByb3RlY3RlZE1lbW9yeSA9IG1fbWVtb3J5LmdldCgpOwotICAgIGF1dG8g
ZGVzdHJ1Y3RvciA9IGNyZWF0ZVNoYXJlZFRhc2s8dm9pZCh2b2lkKik+KFtwcm90ZWN0ZWRNZW1v
cnkgPSBXVEZNb3ZlKHByb3RlY3RlZE1lbW9yeSldICh2b2lkKikgeyB9KTsKKyAgICAgICAgQVNT
RVJUKG1fbWVtb3J5LT5zaGFyaW5nTW9kZSgpID09IFdhc206Ok1lbW9yeVNoYXJpbmdNb2RlOjpT
aGFyZWQpOworICAgICAgICAvLyBJZiBTaGFyZWRBcnJheUJ1ZmZlcidzIHVuZGVybHlpbmcgbWVt
b3J5IGlzIG5vdCBncm93biwgd2UgY29udGludWUgdXNpbmcgY2FjaGVkIHdyYXBwZXIuCisgICAg
ICAgIGlmICh3cmFwcGVyLT5pbXBsKCktPmJ5dGVMZW5ndGgoKSA9PSBtZW1vcnkoKS5zaXplKCkp
CisgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICB9CisKKyAgICBSZWY8V2FzbTo6TWVt
b3J5SGFuZGxlPiBwcm90ZWN0ZWRIYW5kbGUgPSBtX21lbW9yeS0+aGFuZGxlKCk7CisgICAgYXV0
byBkZXN0cnVjdG9yID0gY3JlYXRlU2hhcmVkVGFzazx2b2lkKHZvaWQqKT4oW3Byb3RlY3RlZEhh
bmRsZSA9IFdURk1vdmUocHJvdGVjdGVkSGFuZGxlKV0gKHZvaWQqKSB7IH0pOwogICAgIG1fYnVm
ZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhtZW1vcnkoKS5tZW1vcnkoKSwgbWVt
b3J5KCkuc2l6ZSgpLCBXVEZNb3ZlKGRlc3RydWN0b3IpKTsKICAgICBtX2J1ZmZlci0+bWFrZVdh
c21NZW1vcnkoKTsKLSAgICBtX2J1ZmZlcldyYXBwZXIuc2V0KHZtLCB0aGlzLCBKU0FycmF5QnVm
ZmVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoQXJyYXlC
dWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCksIG1fYnVmZmVyLmdldCgpKSk7CisgICAgaWYgKG1f
bWVtb3J5LT5zaGFyaW5nTW9kZSgpID09IFdhc206Ok1lbW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQp
CisgICAgICAgIG1fYnVmZmVyLT5tYWtlU2hhcmVkKCk7CisgICAgYXV0byogYXJyYXlCdWZmZXIg
PSBKU0FycmF5QnVmZmVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1
Y3R1cmUobV9idWZmZXItPnNoYXJpbmdNb2RlKCkpLCBtX2J1ZmZlci5nZXQoKSk7CisgICAgaWYg
KG1fbWVtb3J5LT5zaGFyaW5nTW9kZSgpID09IFdhc206Ok1lbW9yeVNoYXJpbmdNb2RlOjpTaGFy
ZWQpIHsKKyAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoZ2xvYmFsT2JqZWN0LCBhcnJh
eUJ1ZmZlcik7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsK
KyAgICB9CisgICAgbV9idWZmZXJXcmFwcGVyLnNldCh2bSwgdGhpcywgYXJyYXlCdWZmZXIpOwog
ICAgIFJFTEVBU0VfQVNTRVJUKG1fYnVmZmVyV3JhcHBlcik7CiAgICAgcmV0dXJuIG1fYnVmZmVy
V3JhcHBlci5nZXQoKTsKIH0KQEAgLTExNyw3ICsxMzUsOCBAQCB2b2lkIEpTV2ViQXNzZW1ibHlN
ZW1vcnk6Omdyb3dTdWNjZXNzQ2FsbGJhY2soVk0mIHZtLCBXYXNtOjpQYWdlQ291bnQgb2xkUGFn
ZUNvdQogewogICAgIC8vIFdlIG5lZWQgdG8gY2xlYXIgb3V0IHRoZSBvbGQgYXJyYXkgYnVmZmVy
IGJlY2F1c2UgaXQgbWlnaHQgbm93IGJlIHBvaW50aW5nIHRvIHN0YWxlIG1lbW9yeS4KICAgICBp
ZiAobV9idWZmZXIpIHsKLSAgICAgICAgbV9idWZmZXItPmRldGFjaCh2bSk7CisgICAgICAgIGlm
IChtX21lbW9yeS0+c2hhcmluZ01vZGUoKSA9PSBXYXNtOjpNZW1vcnlTaGFyaW5nTW9kZTo6RGVm
YXVsdCkKKyAgICAgICAgICAgIG1fYnVmZmVyLT5kZXRhY2godm0pOwogICAgICAgICBtX2J1ZmZl
ciA9IG51bGxwdHI7CiAgICAgICAgIG1fYnVmZmVyV3JhcHBlci5jbGVhcigpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1v
cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnku
aAppbmRleCBhYjljNDc0NmIzY2ZhMjUwZDUxZWJjZGY0MmIzYTVmZGI5YWI1NTVkLi5lNDk0OTAz
NjkyZTU5NTQxY2ZhNzkwMzM3NmE0NTMyZjA1NjNhNDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5oCkBAIC0yNyw3ICsyNyw3
IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKLSNpbmNsdWRlICJKU0Rlc3RydWN0aWJs
ZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5o
IgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00OSwx
NiArNDksMTYgQEAgY2xhc3MgSlNXZWJBc3NlbWJseU1lbW9yeSBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIHZtLndlYkFzc2VtYmx5TWVtb3J5U3BhY2U8
bW9kZT4oKTsKICAgICB9CiAKLSAgICBzdGF0aWMgSlNXZWJBc3NlbWJseU1lbW9yeSogdHJ5Q3Jl
YXRlKEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgSlNXZWJBc3NlbWJseU1lbW9yeSogdHJ5Q3JlYXRlKEpTR2xvYmFsT2JqZWN0
KiwgVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9FWFBPUlRf
SU5GTzsKIAotICAgIHZvaWQgYWRvcHQoUmVmPFdhc206Ok1lbW9yeT4mJik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBhZG9wdChSZWY8V2FzbTo6TWVtb3J5PiYmKTsKICAgICBXYXNtOjpN
ZW1vcnkmIG1lbW9yeSgpIHsgcmV0dXJuIG1fbWVtb3J5LmdldCgpOyB9Ci0gICAgSlNBcnJheUJ1
ZmZlciogYnVmZmVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICBKU0FycmF5QnVmZmVy
KiBidWZmZXIoSlNHbG9iYWxPYmplY3QqKTsKICAgICBXYXNtOjpQYWdlQ291bnQgZ3JvdyhWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgdWludDMyX3QgZGVsdGEpOwotICAgIHZvaWQgZ3Jvd1N1Y2Nlc3ND
YWxsYmFjayhWTSYsIFdhc206OlBhZ2VDb3VudCBvbGRQYWdlQ291bnQsIFdhc206OlBhZ2VDb3Vu
dCBuZXdQYWdlQ291bnQpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZ3Jvd1N1Y2Nlc3ND
YWxsYmFjayhWTSYsIFdhc206OlBhZ2VDb3VudCBvbGRQYWdlQ291bnQsIFdhc206OlBhZ2VDb3Vu
dCBuZXdQYWdlQ291bnQpOwogCiBwcml2YXRlOgogICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkoVk0m
LCBTdHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKaW5kZXggOTkyNzZjMmQ5ZTYyN2FkMjE1M2RkZmNhNDlj
Nzc4ZTBjNzljODNjYS4uNzhkYTZkYzNmNGVhZWFkM2M4MDBhZTQyZWMwZTY4ODE3NjVlNDZlNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5j
dGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlG
dW5jdGlvbi5jcHAKQEAgLTM1NywyMCArMzU3LDIwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxK
U0VudHJ5UHRyVGFnPiBXZWJBc3NlbWJseUZ1bmN0aW9uOjpqc0NhbGxFbnRyeXBvaW50U2xvdygp
CiAKICAgICBpZiAoISFtb2R1bGVJbmZvcm1hdGlvbi5tZW1vcnkpIHsKICAgICAgICAgR1BSUmVn
IGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVyOwotICAgICAgICBHUFJS
ZWcgc2NyYXRjaE9yU2l6ZSA9IHN0YWNrTGltaXRHUFI7CisgICAgICAgIEdQUlJlZyBzY3JhdGNo
T3JCb3VuZHNDaGVja2luZ1NpemUgPSBzdGFja0xpbWl0R1BSOwogICAgICAgICBhdXRvIG1vZGUg
PSBpbnN0YW5jZSgpLT5tZW1vcnlNb2RlKCk7CiAKICAgICAgICAgaWYgKGlzQVJNNjRFKCkpIHsK
ICAgICAgICAgICAgIGlmIChtb2RlICE9IFdhc206Ok1lbW9yeU1vZGU6OlNpZ25hbGluZykKLSAg
ICAgICAgICAgICAgICBzY3JhdGNoT3JTaXplID0gcGlubmVkUmVncy5zaXplUmVnaXN0ZXI7Ci0g
ICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwg
V2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSwgc2NyYXRjaE9yU2l6
ZSk7CisgICAgICAgICAgICAgICAgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplID0gcGlubmVk
UmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlcjsKKyAgICAgICAgICAgIGppdC5sb2FkUHRy
KENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0
T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSksIHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6
ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAobW9kZSAhPSBXYXNtOjpNZW1v
cnlNb2RlOjpTaWduYWxpbmcpCi0gICAgICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1l
bW9yeVNpemUoKSksIHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBq
aXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgV2FzbTo6SW5zdGFu
Y2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkpLCBwaW5uZWRSZWdzLmJvdW5k
c0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsKICAgICAgICAgfQogCiAgICAgICAgIGppdC5sb2FkUHRy
KENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0
T2ZDYWNoZWRNZW1vcnkoKSksIGJhc2VNZW1vcnkpOwotICAgICAgICBqaXQuY2FnZUNvbmRpdGlv
bmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgc2NyYXRjaE9yU2l6ZSwgc2Ny
YXRjaE9yU2l6ZSk7CisgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJp
bWl0aXZlLCBiYXNlTWVtb3J5LCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUsIHNjcmF0Y2hP
ckJvdW5kc0NoZWNraW5nU2l6ZSk7CiAgICAgfQogCiAgICAgLy8gV2UgdXNlIHRoaXMgY2FsbGVl
IHRvIGluZGljYXRlIGhvdyB0byB1bndpbmQgcGFzdCB0aGVzZSB0eXBlcyBvZiBmcmFtZXM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9y
eUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TWVtb3J5Q29uc3RydWN0b3IuY3BwCmluZGV4IDUwY2NjYTI0MWZkNWJlOTc5NTZkZjA4OGI5
NGE4ZDhhYjBmZjBkMDUuLjI1NmViMGZmYzM0YWI3MzViYzUzMjg3Yzc1ZjZiMDdlYzZiOGY3Y2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVt
b3J5Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwCkBAIC01Niw4ICs1Niw2IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TWVtb3J5LCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGlmIChjYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnQoKSAhPSAxKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgIldlYkFzc2VtYmx5Lk1lbW9yeSBleHBlY3RzIGV4YWN0bHkgb25l
IGFyZ3VtZW50Il9zKSkpOwogCiAgICAgSlNPYmplY3QqIG1lbW9yeURlc2NyaXB0b3I7CiAgICAg
ewpAQCAtMTAyLDEwICsxMDAsMjMgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVj
dEpTV2ViQXNzZW1ibHlNZW1vcnksIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAg
fQogICAgIH0KIAorICAgIFdhc206Ok1lbW9yeVNoYXJpbmdNb2RlIHNoYXJpbmdNb2RlID0gV2Fz
bTo6TWVtb3J5U2hhcmluZ01vZGU6OkRlZmF1bHQ7CisgICAgSlNWYWx1ZSBzaGFyZWRWYWx1ZSA9
IG1lbW9yeURlc2NyaXB0b3ItPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJzaGFyZWQiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBib29sIHNoYXJlZCA9IHNoYXJlZFZhbHVlLnRvQm9vbGVh
bihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CisgICAgaWYgKHNoYXJlZCkgeworICAgICAgICBpZiAoIW1heGltdW1Q
YWdlQ291bnQpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsICInbWF4aW11bScgcGFnZSBjb3VudCBtdXN0IGJlIGRlZmluZWQgaWYg
J3NoYXJlZCcgaXMgdHJ1ZSJfcyk7CisgICAgICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkQXJy
YXlCdWZmZXIoKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgIlNoYXJlZCBXZWJBc3NlbWJseS5NZW1vcnkgYW5kIFNoYXJlZEFy
cmF5QnVmZmVyIGFyZSBub3QgZW5hYmxlZCJfcyk7CisgICAgICAgIHNoYXJpbmdNb2RlID0gV2Fz
bTo6TWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZDsKKyAgICB9CisKICAgICBhdXRvKiBqc01lbW9y
eSA9IEpTV2ViQXNzZW1ibHlNZW1vcnk6OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIHZtLCBnbG9i
YWxPYmplY3QtPndlYkFzc2VtYmx5TWVtb3J5U3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBSZWZQdHI8V2Fz
bTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OnRyeUNyZWF0ZShpbml0aWFsUGFnZUNv
dW50LCBtYXhpbXVtUGFnZUNvdW50LAorICAgIFJlZlB0cjxXYXNtOjpNZW1vcnk+IG1lbW9yeSA9
IFdhc206Ok1lbW9yeTo6dHJ5Q3JlYXRlKGluaXRpYWxQYWdlQ291bnQsIG1heGltdW1QYWdlQ291
bnQsIHNoYXJpbmdNb2RlLAogICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpOb3RpZnlQcmVz
c3VyZSkgeyB2bS5oZWFwLmNvbGxlY3RBc3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOyB9LAog
ICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7IHZtLmhlYXAu
Y29sbGVjdFN5bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgWyZ2bSwganNN
ZW1vcnldIChXYXNtOjpNZW1vcnk6Okdyb3dTdWNjZXNzLCBXYXNtOjpQYWdlQ291bnQgb2xkUGFn
ZUNvdW50LCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50KSB7IGpzTWVtb3J5LT5ncm93U3Vj
Y2Vzc0NhbGxiYWNrKHZtLCBvbGRQYWdlQ291bnQsIG5ld1BhZ2VDb3VudCk7IH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1v
cnlQcm90b3R5cGUuY3BwCmluZGV4IGFiNGEyYmZlZWVmYTY4NDE3YzM4Y2MxOTU0ZTVlOTdmNjJm
NjAwOWIuLjdlMjA4YzMxMDFjMjM3MTYzMjI5Y2M1NzkyN2FlYTZiOGYwYjI1ZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1l
bW9yeVByb3RvdHlwZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyLCAoSlNHbG9iYWxPYmplY3QqIGds
b2IKIAogICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkqIG1lbW9yeSA9IGdldE1lbW9yeShnbG9iYWxP
YmplY3QsIHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsgCiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobWVtb3J5
LT5idWZmZXIoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG1lbW9yeS0+YnVmZmVyKGds
b2JhbE9iamVjdCkpKTsKIH0KIAogV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUqIFdlYkFzc2Vt
Ymx5TWVtb3J5UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSogc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDMxYzIxZTNjNDM3MDJjOTlm
YjZmODA5NTRkMGM1ZTQ3N2Q3MGRmN2QuLjlkZDJlN2JmNTIxODdmYjM0NWVlZjBlN2Y0ZmEyNjM0
NWIyZWE0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTU2Niw4ICs1NjYsOSBAQCBKU1ZhbHVl
IFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogICAgIH07CiAKICAgICBhdXRvIGZvckVhY2hTZWdtZW50ID0gWyZdIChhdXRvIGZu
KSB7Ci0gICAgICAgIHVpbnQ4X3QqIG1lbW9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+
KG1faW5zdGFuY2UtPmluc3RhbmNlKCkuY2FjaGVkTWVtb3J5KCkpOwotICAgICAgICB1aW50NjRf
dCBzaXplSW5CeXRlcyA9IG1faW5zdGFuY2UtPmluc3RhbmNlKCkuY2FjaGVkTWVtb3J5U2l6ZSgp
OworICAgICAgICBhdXRvIHdhc21NZW1vcnkgPSBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLm1lbW9y
eSgpOworICAgICAgICB1aW50OF90KiBtZW1vcnkgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
Pih3YXNtTWVtb3J5LT5tZW1vcnkoKSk7CisgICAgICAgIHVpbnQ2NF90IHNpemVJbkJ5dGVzID0g
d2FzbU1lbW9yeS0+c2l6ZSgpOwogCiAgICAgICAgIGZvciAoY29uc3QgV2FzbTo6U2VnbWVudDo6
UHRyJiBzZWdtZW50IDogZGF0YSkgewogICAgICAgICAgICAgdWludDMyX3Qgb2Zmc2V0ID0gc2Vn
bWVudC0+b2Zmc2V0LmlzR2xvYmFsSW1wb3J0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDJkOTliZTY0MTNjMzBj
MTQwOGY1MzZiYzE4YTIxZWM4NDFhOTc3NjMuLmQ4Y2NmNGNjNmIyZmVlZmMyZjRkMDczNGRmYjFi
ZDU0NGYxNzllYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtNzUsNiArNzUsNyBAQAogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTU2V0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTZXRJdGVyYXRv
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTVHlwZWRBcnJheXMuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU1dlYkFzc2VtYmx5TWVtb3J5Lmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNXZWJBc3NlbWJseU1vZHVsZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlO
YW1lQXJyYXkuaD4KQEAgLTE4Miw2ICsxODMsOSBAQCBlbnVtIFNlcmlhbGl6YXRpb25UYWcgewog
I2VuZGlmCiAgICAgQmlnSW50VGFnID0gNDcsCiAgICAgQmlnSW50T2JqZWN0VGFnID0gNDgsCisj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIFdhc21NZW1vcnlUYWcgPSA0OSwKKyNlbmRpZgog
ICAgIEVycm9yVGFnID0gMjU1CiB9OwogCkBAIC0zNTcsNyArMzYxLDYgQEAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cmluZ0RhdGFJczhCaXRGbGFnID0gMHg4MDAwMDAwMDsKICAqICAgIHwgTWVz
c2FnZVBvcnRSZWZlcmVuY2VUYWcgPHZhbHVlOnVpbnQzMl90PgogICogICAgfCBBcnJheUJ1ZmZl
cgogICogICAgfCBBcnJheUJ1ZmZlclZpZXdUYWcgQXJyYXlCdWZmZXJWaWV3U3VidGFnIDxieXRl
T2Zmc2V0OnVpbnQzMl90PiA8Ynl0ZUxlbmd0aDp1aW50MzJfdD4gKEFycmF5QnVmZmVyIHwgT2Jq
ZWN0UmVmZXJlbmNlKQotICogICAgfCBBcnJheUJ1ZmZlclRyYW5zZmVyVGFnIDx2YWx1ZTp1aW50
MzJfdD4KICAqICAgIHwgQ3J5cHRvS2V5VGFnIDx3cmFwcGVkS2V5TGVuZ3RoOnVpbnQzMl90PiA8
ZmFjdG9yOmJ5dGV7d3JhcHBlZEtleUxlbmd0aH0+CiAgKiAgICB8IERPTVBvaW50CiAgKiAgICB8
IERPTVJlY3QKQEAgLTM2Nyw2ICszNzAsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RyaW5n
RGF0YUlzOEJpdEZsYWcgPSAweDgwMDAwMDAwOwogICogICAgfCBSVENDZXJ0aWZpY2F0ZVRhZwog
ICogICAgfCBJbWFnZUJpdG1hcFRhZyA8b3JpZ2luQ2xlYW46dWludDhfdD4gPGxvZ2ljYWxXaWR0
aDppbnQzMl90PiA8bG9naWNhbEhlaWdodDppbnQzMl90PiA8cmVzb2x1dGlvblNjYWxlOmRvdWJs
ZT4gPGJ5dGVMZW5ndGg6dWludDMyX3Q+KDxpbWFnZUJ5dGVEYXRhOnVpbnQ4X3Q+KQogICogICAg
fCBPZmZzY3JlZW5DYW52YXNUcmFuc2ZlclRhZyA8dmFsdWU6dWludDMyX3Q+CisgKiAgICB8IFdh
c21NZW1vcnlUYWcgPHZhbHVlOnVpbnQzMl90PgogICoKICAqIEluc2lkZSBjZXJ0aWZpY2F0ZSwg
ZGF0YSBpcyBzZXJpYWxpemVkIGluIHRoaXMgZm9ybWF0IGFzIHBlciBzcGVjOgogICoKQEAgLTQx
OSw2ICs0MjMsOCBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RyaW5nRGF0YUlzOEJpdEZsYWcg
PSAweDgwMDAwMDAwOwogICoKICAqIEFycmF5QnVmZmVyIDotCiAgKiAgICBBcnJheUJ1ZmZlclRh
ZyA8bGVuZ3RoOnVpbnQzMl90PiA8Y29udGVudHM6Ynl0ZXtsZW5ndGh9PgorICogICAgQXJyYXlC
dWZmZXJUcmFuc2ZlclRhZyA8dmFsdWU6dWludDMyX3Q+CisgKiAgICBTaGFyZWRBcnJheUJ1ZmZl
clRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKgogICogQ3J5cHRvS2V5SE1BQyA6LQogICogICAgPGtl
eVNpemU6dWludDMyX3Q+IDxrZXlEYXRhOmJ5dGV7a2V5U2l6ZX0+IENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXJUYWcgLy8gQWxnb3JpdGhtIHRhZyBpbm5lciBoYXNoIGZ1bmN0aW9uLgpAQCAtNTc2
LDYgKzU4Miw3IEBAIGNsYXNzIENsb25lU2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICBXYXNtTW9kdWxlQXJyYXkmIHdh
c21Nb2R1bGVzLAorICAgICAgICAgICAgV2FzbU1lbW9yeUhhbmRsZUFycmF5JiB3YXNtTWVtb3J5
SGFuZGxlcywKICNlbmRpZgogICAgICAgICBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIFZlY3Rv
cjx1aW50OF90PiYgb3V0LCBTZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0LCBBcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXkmIHNoYXJlZEJ1ZmZlcnMpCiAgICAgewpAQCAtNTg1LDYgKzU5Miw3IEBA
IGNsYXNzIENsb25lU2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAjZW5kaWYKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAgICAgICAgICAgICB3YXNtTW9kdWxlcywKKyAgICAgICAgICAgIHdhc21N
ZW1vcnlIYW5kbGVzLAogI2VuZGlmCiAgICAgICAgICAgICBibG9iVVJMcywgb3V0LCBjb250ZXh0
LCBzaGFyZWRCdWZmZXJzKTsKICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZXIuc2VyaWFsaXplKHZh
bHVlKTsKQEAgLTYxNSw2ICs2MjMsNyBAQCBjbGFzcyBDbG9uZVNlcmlhbGl6ZXIgOiBDbG9uZUJh
c2UgewogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAgV2FzbU1v
ZHVsZUFycmF5JiB3YXNtTW9kdWxlcywKKyAgICAgICAgICAgIFdhc21NZW1vcnlIYW5kbGVBcnJh
eSYgd2FzbU1lbW9yeUhhbmRsZXMsCiAjZW5kaWYKICAgICAgICAgVmVjdG9yPFN0cmluZz4mIGJs
b2JVUkxzLCBWZWN0b3I8dWludDhfdD4mIG91dCwgU2VyaWFsaXphdGlvbkNvbnRleHQgY29udGV4
dCwgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5JiBzaGFyZWRCdWZmZXJzKQogICAgICAgICA6IENs
b25lQmFzZShsZXhpY2FsR2xvYmFsT2JqZWN0KQpAQCAtNjI1LDYgKzYzNCw3IEBAIGNsYXNzIENs
b25lU2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAgICAgICAgICwgbV9zaGFyZWRCdWZmZXJzKHNo
YXJlZEJ1ZmZlcnMpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAsIG1fd2FzbU1v
ZHVsZXMod2FzbU1vZHVsZXMpCisgICAgICAgICwgbV93YXNtTWVtb3J5SGFuZGxlcyh3YXNtTWVt
b3J5SGFuZGxlcykKICNlbmRpZgogICAgIHsKICAgICAgICAgd3JpdGUoQ3VycmVudFZlcnNpb24p
OwpAQCAtMTIzMCw2ICsxMjQwLDcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNl
IHsKICAgICAgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBkdW1t
eUFycmF5QnVmZmVyczsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICAgICAg
V2FzbU1vZHVsZUFycmF5IGR1bW15TW9kdWxlczsKKyAgICAgICAgICAgICAgICBXYXNtTWVtb3J5
SGFuZGxlQXJyYXkgZHVtbXlNZW1vcnlIYW5kbGVzOwogI2VuZGlmCiAgICAgICAgICAgICAgICAg
QXJyYXlCdWZmZXJDb250ZW50c0FycmF5IGR1bW15U2hhcmVkQnVmZmVyczsKICAgICAgICAgICAg
ICAgICBDbG9uZVNlcmlhbGl6ZXIgcmF3S2V5U2VyaWFsaXplcihtX2xleGljYWxHbG9iYWxPYmpl
Y3QsIGR1bW15TWVzc2FnZVBvcnRzLCBkdW1teUFycmF5QnVmZmVycywgeyB9LApAQCAtMTIzOCw2
ICsxMjQ5LDcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICNlbmRpZgog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgICAgICAgICAgICAgZHVtbXlNb2R1bGVz
LAorICAgICAgICAgICAgICAgICAgICBkdW1teU1lbW9yeUhhbmRsZXMsCiAjZW5kaWYKICAgICAg
ICAgICAgICAgICAgICAgZHVtbXlCbG9iVVJMcywgc2VyaWFsaXplZEtleSwgU2VyaWFsaXphdGlv
bkNvbnRleHQ6OkRlZmF1bHQsIGR1bW15U2hhcmVkQnVmZmVycyk7CiAgICAgICAgICAgICAgICAg
cmF3S2V5U2VyaWFsaXplci53cml0ZShrZXkpOwpAQCAtMTI3NCw2ICsxMjg2LDE3IEBAIGNsYXNz
IENsb25lU2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAgICAgICAgICAgICAgICAgd3JpdGUoaW5k
ZXgpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKEpTV2ViQXNzZW1ibHlNZW1vcnkqIG1lbW9yeSA9IGpzRHluYW1pY0Nhc3Q8SlNX
ZWJBc3NlbWJseU1lbW9yeSo+KHZtLCBvYmopKSB7CisgICAgICAgICAgICAgICAgaWYgKG1lbW9y
eS0+bWVtb3J5KCkuc2hhcmluZ01vZGUoKSAhPSBKU0M6Oldhc206Ok1lbW9yeVNoYXJpbmdNb2Rl
OjpTaGFyZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgY29kZSA9IFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlOjpEYXRhQ2xvbmVFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4ID0gbV93
YXNtTWVtb3J5SGFuZGxlcy5zaXplKCk7CisgICAgICAgICAgICAgICAgbV93YXNtTWVtb3J5SGFu
ZGxlcy5hcHBlbmQobWFrZVJlZihtZW1vcnktPm1lbW9yeSgpLmhhbmRsZSgpKSk7CisgICAgICAg
ICAgICAgICAgd3JpdGUoV2FzbU1lbW9yeVRhZyk7CisgICAgICAgICAgICAgICAgd3JpdGUoaW5k
ZXgpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQogI2VuZGlm
CiAgICAgICAgICAgICBpZiAob2JqLT5pbmhlcml0czxKU0RPTVBvaW50UmVhZE9ubHk+KHZtKSkg
ewogICAgICAgICAgICAgICAgIGR1bXBET01Qb2ludChvYmopOwpAQCAtMTY1OCw2ICsxNjgxLDcg
QEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICBBcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXkmIG1fc2hhcmVkQnVmZmVyczsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAg
ICAgV2FzbU1vZHVsZUFycmF5JiBtX3dhc21Nb2R1bGVzOworICAgIFdhc21NZW1vcnlIYW5kbGVB
cnJheSYgbV93YXNtTWVtb3J5SGFuZGxlczsKICNlbmRpZgogfTsKIApAQCAtMTkzNyw2ICsxOTYx
LDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAgICAgICAsIEFy
cmF5QnVmZmVyQ29udGVudHNBcnJheSogYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiBibG9iRmlsZVBhdGhzLCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXkqIHNoYXJlZEJ1ZmZlcnMKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgV2Fz
bU1vZHVsZUFycmF5KiB3YXNtTW9kdWxlcworICAgICAgICAsIFdhc21NZW1vcnlIYW5kbGVBcnJh
eSogd2FzbU1lbW9yeUhhbmRsZXMKICNlbmRpZgogICAgICAgICApCiAgICAgewpAQCAtMTk0OCw2
ICsxOTczLDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogI2VuZGlm
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAgLCB3YXNtTW9kdWxlcworICAg
ICAgICAgICAgLCB3YXNtTWVtb3J5SGFuZGxlcwogI2VuZGlmCiAgICAgICAgICAgICApOwogICAg
ICAgICBpZiAoIWRlc2VyaWFsaXplci5pc1ZhbGlkKCkpCkBAIC0yMDAxLDYgKzIwMjcsNyBAQCBj
bGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAjZW5kaWYKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAgICAgICAgICwgV2FzbU1vZHVsZUFycmF5KiB3YXNtTW9kdWxlcyA9IG51
bGxwdHIKKyAgICAgICAgLCBXYXNtTWVtb3J5SGFuZGxlQXJyYXkqIHdhc21NZW1vcnlIYW5kbGVz
ID0gbnVsbHB0cgogI2VuZGlmCiAgICAgICAgICkKICAgICAgICAgOiBDbG9uZUJhc2UobGV4aWNh
bEdsb2JhbE9iamVjdCkKQEAgLTIwMjEsNiArMjA0OCw3IEBAIGNsYXNzIENsb25lRGVzZXJpYWxp
emVyIDogQ2xvbmVCYXNlIHsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAg
ICAgLCBtX3dhc21Nb2R1bGVzKHdhc21Nb2R1bGVzKQorICAgICAgICAsIG1fd2FzbU1lbW9yeUhh
bmRsZXMod2FzbU1lbW9yeUhhbmRsZXMpCiAjZW5kaWYKICAgICB7CiAgICAgICAgIGlmICghcmVh
ZChtX3ZlcnNpb24pKQpAQCAtMjAzMyw2ICsyMDYxLDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6
ZXIgOiBDbG9uZUJhc2UgewogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAg
ICAsIFdhc21Nb2R1bGVBcnJheSogd2FzbU1vZHVsZXMKKyAgICAgICAgLCBXYXNtTWVtb3J5SGFu
ZGxlQXJyYXkqIHdhc21NZW1vcnlIYW5kbGVzCiAjZW5kaWYKICAgICAgICAgKQogICAgICAgICA6
IENsb25lQmFzZShsZXhpY2FsR2xvYmFsT2JqZWN0KQpAQCAtMjA1Niw2ICsyMDg1LDcgQEAgY2xh
c3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogI2VuZGlmCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgICAgICAsIG1fd2FzbU1vZHVsZXMod2FzbU1vZHVsZXMpCisgICAgICAg
ICwgbV93YXNtTWVtb3J5SGFuZGxlcyh3YXNtTWVtb3J5SGFuZGxlcykKICNlbmRpZgogICAgIHsK
ICAgICAgICAgaWYgKCFyZWFkKG1fdmVyc2lvbikpCkBAIC0zMjk5LDYgKzMzMjksMzMgQEAgY2xh
c3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAgICAgICAgICAgbV9nY0J1ZmZl
ci5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93KHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgICAgICB9CisgICAgICAgIGNhc2UgV2FzbU1lbW9yeVRhZzogeworICAgICAg
ICAgICAgdWludDMyX3QgaW5kZXg7CisgICAgICAgICAgICBib29sIGluZGV4U3VjY2Vzc2Z1bGx5
UmVhZCA9IHJlYWQoaW5kZXgpOworICAgICAgICAgICAgaWYgKCFpbmRleFN1Y2Nlc3NmdWxseVJl
YWQgfHwgIW1fd2FzbU1lbW9yeUhhbmRsZXMgfHwgaW5kZXggPj0gbV93YXNtTWVtb3J5SGFuZGxl
cy0+c2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgZmFpbCgpOworICAgICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBSZWZQdHI8V2FzbTo6
TWVtb3J5SGFuZGxlPiBoYW5kbGUgPSBtX3dhc21NZW1vcnlIYW5kbGVzLT5hdChpbmRleCk7Cisg
ICAgICAgICAgICBpZiAoIWhhbmRsZSkgeworICAgICAgICAgICAgICAgIGZhaWwoKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YXV0byYgdm0gPSBtX2xleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CisgICAgICAgICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgICAgICBKU1dlYkFzc2Vt
Ymx5TWVtb3J5KiByZXN1bHQgPSBKU0M6OkpTV2ViQXNzZW1ibHlNZW1vcnk6OnRyeUNyZWF0ZSht
X2xleGljYWxHbG9iYWxPYmplY3QsIHZtLCBtX2dsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlNZW1v
cnlTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAvLyBTaW5jZSB3ZSBhcmUgY2xvbmluZyBhIEpT
V2ViQXNzZW1ibHlNZW1vcnksIGl0J3MgaW1wb3NzaWJsZSBmb3IgdGhhdAorICAgICAgICAgICAg
Ly8gbW9kdWxlIHRvIG5vdCBoYXZlIGJlZW4gYSB2YWxpZCBtb2R1bGUuIFRoZXJlZm9yZSwgY3Jl
YXRlU3R1YiBzaG91bGQKKyAgICAgICAgICAgIC8vIG5vdCB0cm93LgorICAgICAgICAgICAgc2Nv
cGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBSZWY8V2FzbTo6TWVt
b3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OmNyZWF0ZShoYW5kbGUucmVsZWFzZU5vbk51bGwo
KSwKKyAgICAgICAgICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpOb3RpZnlQcmVzc3VyZSkg
eyB2bS5oZWFwLmNvbGxlY3RBc3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOyB9LAorICAgICAg
ICAgICAgICAgIFsmdm1dIChXYXNtOjpNZW1vcnk6OlN5bmNUcnlUb1JlY2xhaW0pIHsgdm0uaGVh
cC5jb2xsZWN0U3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOyB9LAorICAgICAgICAgICAgICAg
IFsmdm0sIHJlc3VsdF0gKFdhc206Ok1lbW9yeTo6R3Jvd1N1Y2Nlc3MsIFdhc206OlBhZ2VDb3Vu
dCBvbGRQYWdlQ291bnQsIFdhc206OlBhZ2VDb3VudCBuZXdQYWdlQ291bnQpIHsgcmVzdWx0LT5n
cm93U3VjY2Vzc0NhbGxiYWNrKHZtLCBvbGRQYWdlQ291bnQsIG5ld1BhZ2VDb3VudCk7IH0pOwor
ICAgICAgICAgICAgcmVzdWx0LT5hZG9wdChXVEZNb3ZlKG1lbW9yeSkpOworICAgICAgICAgICAg
bV9nY0J1ZmZlci5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93KHJlc3VsdCk7CisgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgY2FzZSBBcnJheUJ1
ZmZlclRhZzogewogICAgICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlcjsK
QEAgLTM0MzksNiArMzQ5Niw3IEBAIGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNl
IHsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBXYXNtTW9kdWxlQXJyYXkq
IG1fd2FzbU1vZHVsZXM7CisgICAgV2FzbU1lbW9yeUhhbmRsZUFycmF5KiBtX3dhc21NZW1vcnlI
YW5kbGVzOwogI2VuZGlmCiAKICAgICBTdHJpbmcgYmxvYkZpbGVQYXRoRm9yQmxvYlVSTChjb25z
dCBTdHJpbmcmIGJsb2JVUkwpCkBAIC0zNjYxLDYgKzM3MTksNyBAQCBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIGNv
bnN0IFZlYwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAsIHN0ZDo6
dW5pcXVlX3B0cjxXYXNtTW9kdWxlQXJyYXk+IHdhc21Nb2R1bGVzQXJyYXkKKyAgICAgICAgLCBz
dGQ6OnVuaXF1ZV9wdHI8V2FzbU1lbW9yeUhhbmRsZUFycmF5PiB3YXNtTWVtb3J5SGFuZGxlc0Fy
cmF5CiAjZW5kaWYKICAgICAgICAgKQogICAgIDogbV9kYXRhKFdURk1vdmUoYnVmZmVyKSkKQEAg
LTM2NzIsNiArMzczMSw3IEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgY29uc3QgVmVjCiAjZW5kaWYKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgLCBtX3dhc21Nb2R1bGVzQXJyYXkoV1RGTW92ZSh3YXNt
TW9kdWxlc0FycmF5KSkKKyAgICAsIG1fd2FzbU1lbW9yeUhhbmRsZXNBcnJheShXVEZNb3ZlKHdh
c21NZW1vcnlIYW5kbGVzQXJyYXkpKQogI2VuZGlmCiB7CiAgICAgLy8gU2luY2UgdGhpcyBTZXJp
YWxpemVkU2NyaXB0VmFsdWUgaXMgbWVhbnQgdG8gYmUgcGFzc2VkIGJldHdlZW4gdGhyZWFkcywg
aXRzIFN0cmluZyBkYXRhIG1lbWJlcnMKQEAgLTM3MTAsNiArMzc3MCwxMCBAQCBzaXplX3QgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjb21wdXRlTWVtb3J5Q29zdCgpIGNvbnN0CiAKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAgICAgLy8gV2UgYXJlIG5vdCBzdXBwb3J0aW5nIFdlYkFzc2VtYmx5
IE1vZHVsZSBtZW1vcnkgZXN0aW1hdGlvbiB5ZXQuCisgICAgaWYgKG1fd2FzbU1lbW9yeUhhbmRs
ZXNBcnJheSkgeworICAgICAgICBmb3IgKGF1dG8mIGNvbnRlbnQgOiAqbV93YXNtTWVtb3J5SGFu
ZGxlc0FycmF5KQorICAgICAgICAgICAgY29zdCArPSBjb250ZW50LT5zaXplKCk7CisgICAgfQog
I2VuZGlmCiAKICAgICBmb3IgKGF1dG8mIHVybHMgOiBtX2Jsb2JVUkxzKQpAQCAtMzgwMCw2ICsz
ODY0LDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QmIGxleGkKICAgICBWZWN0b3I8UmVmUHRyPEpTQzo6
QXJyYXlCdWZmZXI+PiBkdW1teUFycmF5QnVmZmVyczsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
CiAgICAgV2FzbU1vZHVsZUFycmF5IGR1bW15TW9kdWxlczsKKyAgICBXYXNtTWVtb3J5SGFuZGxl
QXJyYXkgZHVtbXlNZW1vcnlIYW5kbGVzOwogI2VuZGlmCiAgICAgQXJyYXlCdWZmZXJDb250ZW50
c0FycmF5IGR1bW15U2hhcmVkQnVmZmVyczsKICAgICBhdXRvIGNvZGUgPSBDbG9uZVNlcmlhbGl6
ZXI6OnNlcmlhbGl6ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIGR1bW15TWVzc2FnZVBv
cnRzLCBkdW1teUFycmF5QnVmZmVycywgZHVtbXlJbWFnZUJpdG1hcHMsCkBAIC0zODA4LDExICsz
ODczLDEzIEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0JiBsZXhpCiAjZW5kaWYKICNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCiAgICAgICAgIGR1bW15TW9kdWxlcywKKyAgICAgICAgZHVtbXlNZW1vcnlIYW5k
bGVzLAogI2VuZGlmCiAgICAgICAgIGJsb2JVUkxzLCBidWZmZXIsIFNlcmlhbGl6YXRpb25Db250
ZXh0OjpEZWZhdWx0LCBkdW1teVNoYXJlZEJ1ZmZlcnMpOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZHVtbXlNb2R1bGVzLmlzRW1wdHkoKSwgIldh
c206Ok1vZHVsZSBzZXJpYWxpemF0aW9uIGlzIG9ubHkgYWxsb3dlZCBpbiB0aGUgcG9zdE1lc3Nh
Z2UgY29udGV4dCIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZHVtbXlNZW1vcnlIYW5kbGVz
LmlzRW1wdHkoKSwgIldhc206Ok1lbW9yeSBzZXJpYWxpemF0aW9uIGlzIG9ubHkgYWxsb3dlZCBp
biB0aGUgcG9zdE1lc3NhZ2UgY29udGV4dCIpOwogI2VuZGlmCiAKICAgICBpZiAodGhyb3dFeGNl
cHRpb25zID09IFNlcmlhbGl6YXRpb25FcnJvck1vZGU6OlRocm93aW5nKQpAQCAtMzg1OSw3ICsz
OTI2LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICNlbmRpZgogICAgIGZvciAoYXV0byYg
dHJhbnNmZXJhYmxlIDogdHJhbnNmZXJMaXN0KSB7CiAgICAgICAgIGlmIChhdXRvIGFycmF5QnVm
ZmVyID0gdG9Qb3NzaWJseVNoYXJlZEFycmF5QnVmZmVyKHZtLCB0cmFuc2ZlcmFibGUuZ2V0KCkp
KSB7Ci0gICAgICAgICAgICBpZiAoYXJyYXlCdWZmZXItPmlzRGV0YWNoZWQoKSkKKyAgICAgICAg
ICAgIGlmIChhcnJheUJ1ZmZlci0+aXNEZXRhY2hlZCgpIHx8IGFycmF5QnVmZmVyLT5pc1NoYXJl
ZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBEYXRhQ2xvbmVFcnJvciB9
OwogICAgICAgICAgICAgaWYgKGFycmF5QnVmZmVyLT5pc0xvY2tlZCgpKSB7CiAgICAgICAgICAg
ICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMzkwNCw2ICsz
OTcxLDcgQEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICAgICBWZWN0b3I8U3RyaW5nPiBibG9i
VVJMczsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV2FzbU1vZHVsZUFycmF5IHdhc21N
b2R1bGVzOworICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSB3YXNtTWVtb3J5SGFuZGxlczsKICNl
bmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHNoYXJl
ZEJ1ZmZlcnMgPSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKICAgICBh
dXRvIGNvZGUgPSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzLCBpbWFnZUJpdG1hcHMsCkBAIC0z
OTExLDcgKzM5NzksOCBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYgogICAgICAgICBvZmZzY3Jl
ZW5DYW52YXNlcywKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAgICAgd2Fz
bU1vZHVsZXMsIAorICAgICAgICB3YXNtTW9kdWxlcywKKyAgICAgICAgd2FzbU1lbW9yeUhhbmRs
ZXMsCiAjZW5kaWYKICAgICAgICAgYmxvYlVSTHMsIGJ1ZmZlciwgY29udGV4dCwgKnNoYXJlZEJ1
ZmZlcnMpOwogCkBAIC0zOTM2LDYgKzQwMDUsNyBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYgog
I2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAgICAgICwgbWFrZVVu
aXF1ZTxXYXNtTW9kdWxlQXJyYXk+KHdhc21Nb2R1bGVzKQorICAgICAgICAgICAgICAgICwgbWFr
ZVVuaXF1ZTxXYXNtTWVtb3J5SGFuZGxlQXJyYXk+KHdhc21NZW1vcnlIYW5kbGVzKQogI2VuZGlm
CiAgICAgICAgICAgICAgICAgKSk7CiB9CkBAIC0zOTkzLDYgKzQwNjMsNyBAQCBKU1ZhbHVlIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsCiAgICAgICAgICwgbV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkuZ2V0KCks
IG1fZGF0YSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMsIG1fc2hhcmVkQnVmZmVyQ29udGVudHNB
cnJheS5nZXQoKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBtX3dhc21Nb2R1
bGVzQXJyYXkuZ2V0KCkKKyAgICAgICAgLCBtX3dhc21NZW1vcnlIYW5kbGVzQXJyYXkuZ2V0KCkK
ICNlbmRpZgogICAgICAgICApOwogICAgIGlmICh0aHJvd0V4Y2VwdGlvbnMgPT0gU2VyaWFsaXph
dGlvbkVycm9yTW9kZTo6VGhyb3dpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGQyYTBjNGEwYjgzZGFlODkyZGI3OTUw
NmVkMzE2ZGViMzhhMTY1MGQuLjBjZGI0MDE4Yzg0N2ZhMDBmZWQ3ZjVmYjBmY2JjYTM1Mzk4MzUy
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oCkBAIC00MSw2ICs0MSw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpT
VmFsdWUqIEpTVmFsdWVSZWY7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBXYXNtIHsKIGNsYXNzIE1vZHVsZTsKK2NsYXNzIE1lbW9yeUhhbmRsZTsK
IH0gfQogI2VuZGlmCiAKQEAgLTYxLDYgKzYyLDcgQEAgZW51bSBjbGFzcyBTZXJpYWxpemF0aW9u
Q29udGV4dCB7IERlZmF1bHQsIFdvcmtlclBvc3RNZXNzYWdlLCBXaW5kb3dQb3N0TWVzc2FnZQog
dXNpbmcgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5ID0gVmVjdG9yPEpTQzo6QXJyYXlCdWZmZXJD
b250ZW50cz47CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogdXNpbmcgV2FzbU1vZHVsZUFycmF5
ID0gVmVjdG9yPFJlZlB0cjxKU0M6Oldhc206Ok1vZHVsZT4+OwordXNpbmcgV2FzbU1lbW9yeUhh
bmRsZUFycmF5ID0gVmVjdG9yPFJlZlB0cjxKU0M6Oldhc206Ok1lbW9yeUhhbmRsZT4+OwogI2Vu
ZGlmCiAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSk7CkBAIC0xMjIsNiArMTI0LDcgQEAgY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZh
bHVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4K
ICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBzdGQ6OnVuaXF1ZV9w
dHI8V2FzbU1vZHVsZUFycmF5PiA9IG51bGxwdHIKKyAgICAgICAgLCBzdGQ6OnVuaXF1ZV9wdHI8
V2FzbU1lbW9yeUhhbmRsZUFycmF5PiA9IG51bGxwdHIKICNlbmRpZgogICAgICAgICApOwogCkBA
IC0xMzYsNiArMTM5LDcgQEAgY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4KICNlbmRpZgogI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1vZHVsZUFycmF5PiBt
X3dhc21Nb2R1bGVzQXJyYXk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdhc21NZW1vcnlIYW5kbGVB
cnJheT4gbV93YXNtTWVtb3J5SGFuZGxlc0FycmF5OwogI2VuZGlmCiAgICAgVmVjdG9yPFN0cmlu
Zz4gbV9ibG9iVVJMczsKICAgICBzaXplX3QgbV9tZW1vcnlDb3N0IHsgMCB9OwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggYzViZWU1NmE5MmI0ODdiZDQxOGM4M2ZmMDA1OGY5ZjQ3
N2M1Mjg1Mi4uNDdlOTU0ZDcwYTZhYzI2Zjc4MDZkY2YwODk3Yjg2MDAxZjZjNzllOCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMTEtMTMgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1l
bnQgV2ViQXNzZW1ibHkuTWVtb3J5IHdpdGggc2hhcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBp
L21lbW9yeS9jb25zdHJ1Y3Rvci5hbnktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5hbnkud29ya2VyLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkv
Z3Jvdy5hbnktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93YXNt
L2pzYXBpL21lbW9yeS9ncm93LmFueS53b3JrZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb2J1ZmZlci1p
bnRlcmZhY2UvYXVkaW9idWZmZXItY29weS1jaGFubmVsLWV4cGVjdGVkLnR4dDoKKwogMjAyMC0x
MS0xMiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lu
dGVncmF0aW9uXSBFbmFibGUgaW5saW5lIHJlcGxhY2VkIHN1cHBvcnQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1v
cnkvY29uc3RydWN0b3IuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvY29uc3RydWN0b3IuYW55LWV4
cGVjdGVkLnR4dAppbmRleCA5YTI0OTA1N2Y0OTgyNjQ5NDZmYmJlNjMxOGFmNzMyYmFkNWE3ZGVl
Li40YmI0OTQyYTFhZWNiZGU2ZGQyNzdhZDBiNGZiYTgyOGUxZjlkMDRlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVt
b3J5L2NvbnN0cnVjdG9yLmFueS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5h
bnktZXhwZWN0ZWQudHh0CkBAIC0xOCwxMiArMTgsMTIgQEAgUEFTUyBPdXQtb2YtcmFuZ2UgbWF4
aW11bSB2YWx1ZSBpbiBkZXNjcmlwdG9yOiA0Mjk0OTY3Mjk2CiBQQVNTIE91dC1vZi1yYW5nZSBp
bml0aWFsIHZhbHVlIGluIGRlc2NyaXB0b3I6IDY4NzE5NDc2NzM2CiBQQVNTIE91dC1vZi1yYW5n
ZSBtYXhpbXVtIHZhbHVlIGluIGRlc2NyaXB0b3I6IDY4NzE5NDc2NzM2CiBQQVNTIEluaXRpYWwg
dmFsdWUgZXhjZWVkcyBtYXhpbXVtCi1GQUlMIFNoYXJlZCBtZW1vcnkgd2l0aG91dCBtYXhpbXVt
IGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5
KHsgImluaXRpYWwiOiAxMCwgInNoYXJlZCI6IHRydWUgfSkiIGRpZCBub3QgdGhyb3cKK1BBU1Mg
U2hhcmVkIG1lbW9yeSB3aXRob3V0IG1heGltdW0KIFBBU1MgUHJveHkgZGVzY3JpcHRvcgogUEFT
UyBPcmRlciBvZiBldmFsdWF0aW9uIGZvciBkZXNjcmlwdG9yCi1GQUlMIE9yZGVyIG9mIGV2YWx1
YXRpb24gZm9yIGRlc2NyaXB0b3IgKHdpdGggc2hhcmVkKSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBs
ZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkgWyJpbml0aWFsIiwgImluaXRpYWwgdmFsdWVP
ZiIsICJtYXhpbXVtIiwgIm1heGltdW0gdmFsdWVPZiIsICJzaGFyZWQiXSBsZW5ndGggNSwgZ290
IFsiaW5pdGlhbCIsICJpbml0aWFsIHZhbHVlT2YiLCAibWF4aW11bSIsICJtYXhpbXVtIHZhbHVl
T2YiXSBsZW5ndGggNAorUEFTUyBPcmRlciBvZiBldmFsdWF0aW9uIGZvciBkZXNjcmlwdG9yICh3
aXRoIHNoYXJlZCkKIFBBU1MgWmVybyBpbml0aWFsCiBQQVNTIE5vbi16ZXJvIGluaXRpYWwKLUZB
SUwgU3RyYXkgYXJndW1lbnQgV2ViQXNzZW1ibHkuTWVtb3J5IGV4cGVjdHMgZXhhY3RseSBvbmUg
YXJndW1lbnQKLUZBSUwgU2hhcmVkIG1lbW9yeSBhc3NlcnRfZXF1YWxzOiBwcm90b3R5cGUgb2Yg
YnVmZmVyIGV4cGVjdGVkIG9iamVjdCAiW29iamVjdCBTaGFyZWRBcnJheUJ1ZmZlcl0iIGJ1dCBn
b3Qgb2JqZWN0ICJbb2JqZWN0IEFycmF5QnVmZmVyXSIKK1BBU1MgU3RyYXkgYXJndW1lbnQKK1BB
U1MgU2hhcmVkIG1lbW9yeQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFueS53b3Jr
ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5hbnkud29ya2VyLWV4cGVjdGVkLnR4
dAppbmRleCA5YTI0OTA1N2Y0OTgyNjQ5NDZmYmJlNjMxOGFmNzMyYmFkNWE3ZGVlLi40YmI0OTQy
YTFhZWNiZGU2ZGQyNzdhZDBiNGZiYTgyOGUxZjlkMDRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0
cnVjdG9yLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvY29uc3RydWN0b3IuYW55
Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTE4LDEyICsxOCwxMiBAQCBQQVNTIE91dC1vZi1yYW5n
ZSBtYXhpbXVtIHZhbHVlIGluIGRlc2NyaXB0b3I6IDQyOTQ5NjcyOTYKIFBBU1MgT3V0LW9mLXJh
bmdlIGluaXRpYWwgdmFsdWUgaW4gZGVzY3JpcHRvcjogNjg3MTk0NzY3MzYKIFBBU1MgT3V0LW9m
LXJhbmdlIG1heGltdW0gdmFsdWUgaW4gZGVzY3JpcHRvcjogNjg3MTk0NzY3MzYKIFBBU1MgSW5p
dGlhbCB2YWx1ZSBleGNlZWRzIG1heGltdW0KLUZBSUwgU2hhcmVkIG1lbW9yeSB3aXRob3V0IG1h
eGltdW0gYXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+IG5ldyBXZWJBc3NlbWJseS5N
ZW1vcnkoeyAiaW5pdGlhbCI6IDEwLCAic2hhcmVkIjogdHJ1ZSB9KSIgZGlkIG5vdCB0aHJvdwor
UEFTUyBTaGFyZWQgbWVtb3J5IHdpdGhvdXQgbWF4aW11bQogUEFTUyBQcm94eSBkZXNjcmlwdG9y
CiBQQVNTIE9yZGVyIG9mIGV2YWx1YXRpb24gZm9yIGRlc2NyaXB0b3IKLUZBSUwgT3JkZXIgb2Yg
ZXZhbHVhdGlvbiBmb3IgZGVzY3JpcHRvciAod2l0aCBzaGFyZWQpIGFzc2VydF9hcnJheV9lcXVh
bHM6IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCBhcnJheSBbImluaXRpYWwiLCAiaW5pdGlhbCB2
YWx1ZU9mIiwgIm1heGltdW0iLCAibWF4aW11bSB2YWx1ZU9mIiwgInNoYXJlZCJdIGxlbmd0aCA1
LCBnb3QgWyJpbml0aWFsIiwgImluaXRpYWwgdmFsdWVPZiIsICJtYXhpbXVtIiwgIm1heGltdW0g
dmFsdWVPZiJdIGxlbmd0aCA0CitQQVNTIE9yZGVyIG9mIGV2YWx1YXRpb24gZm9yIGRlc2NyaXB0
b3IgKHdpdGggc2hhcmVkKQogUEFTUyBaZXJvIGluaXRpYWwKIFBBU1MgTm9uLXplcm8gaW5pdGlh
bAotRkFJTCBTdHJheSBhcmd1bWVudCBXZWJBc3NlbWJseS5NZW1vcnkgZXhwZWN0cyBleGFjdGx5
IG9uZSBhcmd1bWVudAotRkFJTCBTaGFyZWQgbWVtb3J5IGFzc2VydF9lcXVhbHM6IHByb3RvdHlw
ZSBvZiBidWZmZXIgZXhwZWN0ZWQgb2JqZWN0ICJbb2JqZWN0IFNoYXJlZEFycmF5QnVmZmVyXSIg
YnV0IGdvdCBvYmplY3QgIltvYmplY3QgQXJyYXlCdWZmZXJdIgorUEFTUyBTdHJheSBhcmd1bWVu
dAorUEFTUyBTaGFyZWQgbWVtb3J5CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnktZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNt
L2pzYXBpL21lbW9yeS9ncm93LmFueS1leHBlY3RlZC50eHQKaW5kZXggNDAwOWY2YWViMmY4ZTcw
YzE4YjAwM2YwNmY4YzA3NWFmMjQ0NDc2My4uYTVkZTYwZGQ2MjgwNjYzMjUwN2NmZmFhNTY1YTJk
YWQ4OWI3Y2YwZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9ncm93LmFueS1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21l
bW9yeS9ncm93LmFueS1leHBlY3RlZC50eHQKQEAgLTE3LDUgKzE3LDUgQEAgUEFTUyBPdXQtb2Yt
cmFuZ2UgYXJndW1lbnQ6IDY4NzE5NDc2NzM2CiBQQVNTIE91dC1vZi1yYW5nZSBhcmd1bWVudDog
IjB4MTAwMDAwMDAwIgogUEFTUyBPdXQtb2YtcmFuZ2UgYXJndW1lbnQ6IG9iamVjdCAiW29iamVj
dCBPYmplY3RdIgogUEFTUyBTdHJheSBhcmd1bWVudAotRkFJTCBHcm93aW5nIHNoYXJlZCBtZW1v
cnkgZG9lcyBub3QgZGV0YWNoIG9sZCBidWZmZXIgYXNzZXJ0X2VxdWFsczogQnVmZmVyIGJlZm9y
ZSBncm93aW5nOiBjb25zdHJ1Y3RvciBleHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UKK1BBU1Mg
R3Jvd2luZyBzaGFyZWQgbWVtb3J5IGRvZXMgbm90IGRldGFjaCBvbGQgYnVmZmVyCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS9tZW1vcnkvZ3Jvdy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnku
d29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCA0MDA5ZjZhZWIyZjhlNzBjMThiMDAzZjA2ZjhjMDc1
YWYyNDQ0NzYzLi5hNWRlNjBkZDYyODA2NjMyNTA3Y2ZmYWE1NjVhMmRhZDg5YjdjZjBlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20v
anNhcGkvbWVtb3J5L2dyb3cuYW55Lndvcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9ncm93
LmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0xNyw1ICsxNyw1IEBAIFBBU1MgT3V0LW9mLXJh
bmdlIGFyZ3VtZW50OiA2ODcxOTQ3NjczNgogUEFTUyBPdXQtb2YtcmFuZ2UgYXJndW1lbnQ6ICIw
eDEwMDAwMDAwMCIKIFBBU1MgT3V0LW9mLXJhbmdlIGFyZ3VtZW50OiBvYmplY3QgIltvYmplY3Qg
T2JqZWN0XSIKIFBBU1MgU3RyYXkgYXJndW1lbnQKLUZBSUwgR3Jvd2luZyBzaGFyZWQgbWVtb3J5
IGRvZXMgbm90IGRldGFjaCBvbGQgYnVmZmVyIGFzc2VydF9lcXVhbHM6IEJ1ZmZlciBiZWZvcmUg
Z3Jvd2luZzogY29uc3RydWN0b3IgZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCitQQVNTIEdy
b3dpbmcgc2hhcmVkIG1lbW9yeSBkb2VzIG5vdCBkZXRhY2ggb2xkIGJ1ZmZlcgogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlv
L3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvYnVmZmVyLWludGVyZmFjZS9hdWRpb2J1ZmZlci1jb3B5
LWNoYW5uZWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb2J1ZmZlci1pbnRlcmZh
Y2UvYXVkaW9idWZmZXItY29weS1jaGFubmVsLWV4cGVjdGVkLnR4dAppbmRleCAwOGQ1MGY4YjUx
ZmU3NDBhNzYwMDEyODZlNDk5ZGJkYjA1ZWJlYjRiLi4zNzkzNGZlY2YzNjk0MTRhZmVmZmE3NjVm
NDU5ZGFjOGUwNGYxOWM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvYnVmZmVyLWlu
dGVyZmFjZS9hdWRpb2J1ZmZlci1jb3B5LWNoYW5uZWwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlv
LWFwaS90aGUtYXVkaW9idWZmZXItaW50ZXJmYWNlL2F1ZGlvYnVmZmVyLWNvcHktY2hhbm5lbC1l
eHBlY3RlZC50eHQKQEAgLTE5LDkgKzE5LDkgQEAgUEFTUyAgIDQ6IGJ1ZmZlci5jb3B5RnJvbUNo
YW5uZWwoeCwgMykgdGhyZXcgSW5kZXhTaXplRXJyb3I6ICJOb3QgYSB2YWxpZCBjaGFubmUKIFBB
U1MgICA1OiBidWZmZXIuY29weUZyb21DaGFubmVsKHgsIDAsIC0xKSBkaWQgbm90IHRocm93IGFu
IGV4Y2VwdGlvbi4KIFBBU1MgICA2OiBidWZmZXIuY29weUZyb21DaGFubmVsKHgsIDAsIDE2KSBk
aWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4KIFBBU1MgICA3OiBidWZmZXIuY29weUZyb21DaGFu
bmVsKHgsIDMpIHRocmV3IEluZGV4U2l6ZUVycm9yOiAiTm90IGEgdmFsaWQgY2hhbm5lbE51bWJl
ci4iLgotRkFJTCBYIDg6IGJ1ZmZlci5jb3B5RnJvbUNoYW5uZWwoU2hhcmVkQXJyYXlCdWZmZXIg
dmlldywgMCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24uIGFzc2VydF90cnVlOiBleHBlY3Rl
ZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBYIDk6IGJ1ZmZlci5jb3B5RnJvbUNoYW5uZWwoU2hhcmVk
QXJyYXlCdWZmZXIgdmlldywgMCwgMCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24uIGFzc2Vy
dF90cnVlOiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCA8IFtjb3B5RnJvbS1leGNlcHRp
b25zXSAyIG91dCBvZiAxMSBhc3NlcnRpb25zIHdlcmUgZmFpbGVkLiBhc3NlcnRfdHJ1ZTogZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK1BBU1MgICA4OiBidWZmZXIuY29weUZyb21DaGFubmVsKFNo
YXJlZEFycmF5QnVmZmVyIHZpZXcsIDApIHRocmV3IFR5cGVFcnJvcjogIkFyZ3VtZW50IDEgKCdk
ZXN0aW5hdGlvbicpIHRvIEF1ZGlvQnVmZmVyLmNvcHlGcm9tQ2hhbm5lbCBtdXN0IGJlIGFuIGlu
c3RhbmNlIG9mIEZsb2F0MzJBcnJheSIuCitQQVNTICAgOTogYnVmZmVyLmNvcHlGcm9tQ2hhbm5l
bChTaGFyZWRBcnJheUJ1ZmZlciB2aWV3LCAwLCAwKSB0aHJldyBUeXBlRXJyb3I6ICJBcmd1bWVu
dCAxICgnZGVzdGluYXRpb24nKSB0byBBdWRpb0J1ZmZlci5jb3B5RnJvbUNoYW5uZWwgbXVzdCBi
ZSBhbiBpbnN0YW5jZSBvZiBGbG9hdDMyQXJyYXkiLgorUEFTUyA8IFtjb3B5RnJvbS1leGNlcHRp
b25zXSBBbGwgYXNzZXJ0aW9ucyBwYXNzZWQuICh0b3RhbCAxMSBhc3NlcnRpb25zKQogUEFTUyA+
IFtjb3B5VG8tZXhjZXB0aW9uc10KIFBBU1MgICBBdWRpb0J1ZmZlci5wcm90b3R5cGUuY29weVRv
Q2hhbm5lbCBkb2VzIGV4aXN0LgogUEFTUyAgIDA6IGJ1ZmZlci5jb3B5VG9DaGFubmVsKG51bGws
IDApIHRocmV3IFR5cGVFcnJvcjogIkFyZ3VtZW50IDEgKCdzb3VyY2UnKSB0byBBdWRpb0J1ZmZl
ci5jb3B5VG9DaGFubmVsIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgRmxvYXQzMkFycmF5Ii4KQEAg
LTMxLDkgKzMxLDkgQEAgUEFTUyAgIDM6IGJ1ZmZlci5jb3B5VG9DaGFubmVsKHgsIDMpIHRocmV3
IEluZGV4U2l6ZUVycm9yOiAiTm90IGEgdmFsaWQgY2hhbm5lbE4KIFBBU1MgICA0OiBidWZmZXIu
Y29weVRvQ2hhbm5lbCh4LCAwLCAtMSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24uCiBQQVNT
ICAgNTogYnVmZmVyLmNvcHlUb0NoYW5uZWwoeCwgMCwgMTYpIGRpZCBub3QgdGhyb3cgYW4gZXhj
ZXB0aW9uLgogUEFTUyAgIDY6IGJ1ZmZlci5jb3B5VG9DaGFubmVsKHgsIDMpIHRocmV3IEluZGV4
U2l6ZUVycm9yOiAiTm90IGEgdmFsaWQgY2hhbm5lbE51bWJlci4iLgotRkFJTCBYIDc6IGJ1ZmZl
ci5jb3B5VG9DaGFubmVsKFNoYXJlZEFycmF5QnVmZmVyIHZpZXcsIDApIGRpZCBub3QgdGhyb3cg
YW4gZXhjZXB0aW9uLiBhc3NlcnRfdHJ1ZTogZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwg
WCA4OiBidWZmZXIuY29weVRvQ2hhbm5lbChTaGFyZWRBcnJheUJ1ZmZlciB2aWV3LCAwLCAwKSBk
aWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4gYXNzZXJ0X3RydWU6IGV4cGVjdGVkIHRydWUgZ290
IGZhbHNlCi1GQUlMIDwgW2NvcHlUby1leGNlcHRpb25zXSAyIG91dCBvZiAxMCBhc3NlcnRpb25z
IHdlcmUgZmFpbGVkLiBhc3NlcnRfdHJ1ZTogZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK1BBU1Mg
ICA3OiBidWZmZXIuY29weVRvQ2hhbm5lbChTaGFyZWRBcnJheUJ1ZmZlciB2aWV3LCAwKSB0aHJl
dyBUeXBlRXJyb3I6ICJBcmd1bWVudCAxICgnc291cmNlJykgdG8gQXVkaW9CdWZmZXIuY29weVRv
Q2hhbm5lbCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEZsb2F0MzJBcnJheSIuCitQQVNTICAgODog
YnVmZmVyLmNvcHlUb0NoYW5uZWwoU2hhcmVkQXJyYXlCdWZmZXIgdmlldywgMCwgMCkgdGhyZXcg
VHlwZUVycm9yOiAiQXJndW1lbnQgMSAoJ3NvdXJjZScpIHRvIEF1ZGlvQnVmZmVyLmNvcHlUb0No
YW5uZWwgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBGbG9hdDMyQXJyYXkiLgorUEFTUyA8IFtjb3B5
VG8tZXhjZXB0aW9uc10gQWxsIGFzc2VydGlvbnMgcGFzc2VkLiAodG90YWwgMTAgYXNzZXJ0aW9u
cykKIFBBU1MgPiBbY29weUZyb20tdmFsaWRhdGVdCiBQQVNTICAgYnVmZmVyLmNvcHlGcm9tQ2hh
bm5lbChkc3Q4LCAwKSBpcyBpZGVudGljYWwgdG8gdGhlIGFycmF5IFsxLDIsMyw0LDUsNiw3LDhd
LgogUEFTUyAgIGJ1ZmZlci5jb3B5RnJvbUNoYW5uZWwoZHN0OCwgMSkgaXMgaWRlbnRpY2FsIHRv
IHRoZSBhcnJheSBbMiwzLDQsNSw2LDcsOCw5XS4KQEAgLTYwLDUgKzYwLDUgQEAgUEFTUyAgIGJ1
ZmZlci5jb3B5VG9DaGFubmVsKHNyYzEwLCAwLCA1KSBpcyBpZGVudGljYWwgdG8gdGhlIGFycmF5
IFstMSwtMSwtMSwtMSwKIFBBU1MgICBidWZmZXIuY29weVRvQ2hhbm5lbChzcmMxMCwgMSwgNSkg
aXMgaWRlbnRpY2FsIHRvIHRoZSBhcnJheSBbLTEsLTEsLTEsLTEsLTEsMSwyLDMsNCw1LDYsNyw4
LDksMTAsLTEuLi5dLgogUEFTUyAgIGJ1ZmZlci5jb3B5VG9DaGFubmVsKHNyYzEwLCAyLCA1KSBp
cyBpZGVudGljYWwgdG8gdGhlIGFycmF5IFstMSwtMSwtMSwtMSwtMSwxLDIsMyw0LDUsNiw3LDgs
OSwxMCwtMS4uLl0uCiBQQVNTIDwgW2NvcHlUby12YWxpZGF0ZV0gQWxsIGFzc2VydGlvbnMgcGFz
c2VkLiAodG90YWwgMTAgYXNzZXJ0aW9ucykKLUZBSUwgIyBBVURJVCBUQVNLIFJVTk5FUiBGSU5J
U0hFRDogMiBvdXQgb2YgNSB0YXNrcyB3ZXJlIGZhaWxlZC4gYXNzZXJ0X3RydWU6IGV4cGVjdGVk
IHRydWUgZ290IGZhbHNlCitQQVNTICMgQVVESVQgVEFTSyBSVU5ORVIgRklOSVNIRUQ6IDUgdGFz
a3MgcmFuIHN1Y2Nlc3NmdWxseS4KIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9K
U1Rlc3RzL0NoYW5nZUxvZwppbmRleCBhODY0NmI3MzQ2NjZhODZlMjgyODE3NGIyODczZTliYzdh
NjE4OTFhLi4zNmQyZjcwNWY2YTRiY2RkZjBhNTY5ZDVjMDM0NmVlNTQ4YTZiNjYyIDEwMDY0NAot
LS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDIwLTExLTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gSW1wbGVtZW50IFdlYkFzc2VtYmx5Lk1lbW9yeSB3aXRoIHNoYXJlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NjkzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3YXNtL2Z1
bmN0aW9uLXRlc3RzL3RyYXAtbG9hZC1zaGFyZWQuanM6IEFkZGVkLgorICAgICAgICAod2FzbUZy
YW1lQ291bnRGcm9tRXJyb3IpOgorICAgICAgICAqIHdhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1z
dG9yZS1zaGFyZWQuanM6IEFkZGVkLgorICAgICAgICAqIHdhc20vanMtYXBpL3Rlc3RfbWVtb3J5
LmpzOgorICAgICAgICAoYmluYXJ5U2hvdWxkTm90UGFyc2UpOgorICAgICAgICAqIHdhc20vc3Ry
ZXNzL3NoYXJlZC13YXNtLW1lbW9yeS1idWZmZXIuanM6IEFkZGVkLgorCiAyMDIwLTExLTEyICBZ
dXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXBncmFk
ZSB0ZXN0MjYyCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1s
b2FkLXNoYXJlZC5qcyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLWxvYWQtc2hh
cmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ5ODkwYTdhYWQ1N2U2NDgyNGQxMTRiYjJhMzExODA2MzI0NDAx
NmIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1s
b2FkLXNoYXJlZC5qcwpAQCAtMCwwICsxLDM0IEBACitpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9C
dWlsZGVyLmpzJworaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcycKKworY29u
c3QgcGFnZVNpemUgPSA2NCAqIDEwMjQ7Citjb25zdCBudW1QYWdlcyA9IDEwOworCitjb25zdCBi
dWlsZGVyID0gKG5ldyBCdWlsZGVyKCkpCisgICAgLlR5cGUoKS5FbmQoKQorICAgIC5JbXBvcnQo
KQorICAgICAgICAuTWVtb3J5KCJhIiwgImIiLCB7aW5pdGlhbDogbnVtUGFnZXN9KQorICAgIC5F
bmQoKQorICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgLkV4cG9ydCgpLkZ1bmN0aW9uKCJmb28i
KS5FbmQoKQorICAgIC5Db2RlKCkKKyAgICAgICAgLkZ1bmN0aW9uKCJmb28iLCB7cGFyYW1zOiBb
ImkzMiJdLCByZXQ6ICJpMzIifSkKKyAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAg
ICAgLkkzMkxvYWQoMiwgMCkKKyAgICAgICAgICAgIC5SZXR1cm4oKQorICAgICAgICAuRW5kKCkK
KyAgICAuRW5kKCk7CisKK2NvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsK
K2NvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKK2NvbnN0IGZvbyA9
IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHthOiB7YjogbmV3IFdlYkFzc2VtYmx5
Lk1lbW9yeSh7aW5pdGlhbDogbnVtUGFnZXMsIG1heGltdW06IG51bVBhZ2VzICogMiwgc2hhcmVk
OiB0cnVlfSl9fSkuZXhwb3J0cy5mb287CisKK2Z1bmN0aW9uIHdhc21GcmFtZUNvdW50RnJvbUVy
cm9yKGUpIHsKKyAgICBsZXQgc3RhY2tGcmFtZXMgPSBlLnN0YWNrLnNwbGl0KCJcbiIpLmZpbHRl
cigocykgPT4gcy5pbmRleE9mKCJ3YXNtLSIpICE9PSAtMSk7CisgICAgcmV0dXJuIHN0YWNrRnJh
bWVzLmxlbmd0aDsKK30KKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICBj
b25zdCBlID0gYXNzZXJ0LnRocm93cygoKSA9PiBmb28obnVtUGFnZXMgKiBwYWdlU2l6ZSArIDEp
LCBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IsICJPdXQgb2YgYm91bmRzIG1lbW9yeSBhY2Nlc3Mi
KTsKKyAgICBhc3NlcnQuZXEod2FzbUZyYW1lQ291bnRGcm9tRXJyb3IoZSksIDIpOworfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtc3RvcmUtc2hhcmVkLmpz
IGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtc3RvcmUtc2hhcmVkLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ4Y2E5YTg5NjM4MzkxYmYwNGVlZGNiYjZiN2QzZmM1NDFlODE0ZGEKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1zdG9yZS1zaGFyZWQu
anMKQEAgLTAsMCArMSwyOSBAQAoraW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcycK
K2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnCisKK2NvbnN0IHBhZ2VTaXpl
ID0gNjQgKiAxMDI0OworY29uc3QgbnVtUGFnZXMgPSAxMDsKKworeworICAgIGNvbnN0IGJ1aWxk
ZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAuSW1w
b3J0KCkKKyAgICAgICAgICAgIC5NZW1vcnkoImEiLCAiYiIsIHtpbml0aWFsOiBudW1QYWdlc30p
CisgICAgICAgIC5FbmQoKQorICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAuRXhw
b3J0KCkuRnVuY3Rpb24oImZvbyIpLkVuZCgpCisgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAg
IC5GdW5jdGlvbigiZm9vIiwge3BhcmFtczogWyJpMzIiLCAiaTMyIl19KQorICAgICAgICAgICAg
ICAgIC5HZXRMb2NhbCgxKQorICAgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAg
ICAgICAgIC5JMzJTdG9yZSgyLCAwKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgIC5FbmQo
KTsKKworICAgIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsKKyAgICBj
b25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7CisgICAgY29uc3QgZm9v
ID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2E6IHtiOiBuZXcgV2ViQXNzZW1i
bHkuTWVtb3J5KHtpbml0aWFsOiBudW1QYWdlcywgbWF4aW11bTogbnVtUGFnZXMgKiAyLCBzaGFy
ZWQ6IHRydWV9KX19KS5leHBvcnRzLmZvbzsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDA7IGkrKykKKyAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBmb28oaSwgbnVtUGFnZXMgKiBw
YWdlU2l6ZSArIDEpLCBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IsICJPdXQgb2YgYm91bmRzIG1l
bW9yeSBhY2Nlc3MiKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9t
ZW1vcnkuanMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfbWVtb3J5LmpzCmluZGV4IDUyMDU5
OTI3MGM1MGJkYzhlYzJhNWUxYTUxOTVlMWNjY2IwOWM5NDguLjhjNzYyYjUxZGY3MDFmYzI0M2Ew
NTRkZjEwYzE2ZDhjM2E5Nzk3MzYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVz
dF9tZW1vcnkuanMKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0X21lbW9yeS5qcwpAQCAt
MTI0LDcgKzEyNCw3IEBAIGZ1bmN0aW9uIGJpbmFyeVNob3VsZE5vdFBhcnNlKGJ1aWxkZXIpIHsK
IAogewogICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSgyMCks
IFR5cGVFcnJvciwgIldlYkFzc2VtYmx5Lk1lbW9yeSBleHBlY3RzIGl0cyBmaXJzdCBhcmd1bWVu
dCB0byBiZSBhbiBvYmplY3QiKTsgCi0gICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNz
ZW1ibHkuTWVtb3J5KHt9LCB7fSksIFR5cGVFcnJvciwgICJXZWJBc3NlbWJseS5NZW1vcnkgZXhw
ZWN0cyBleGFjdGx5IG9uZSBhcmd1bWVudCIpOworICAgIG5ldyBXZWJBc3NlbWJseS5NZW1vcnko
e30sIHt9KTsKIH0KIAogZnVuY3Rpb24gdGVzdChmKSB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dh
c20vc3RyZXNzL3NoYXJlZC13YXNtLW1lbW9yeS1idWZmZXIuanMgYi9KU1Rlc3RzL3dhc20vc3Ry
ZXNzL3NoYXJlZC13YXNtLW1lbW9yeS1idWZmZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDg5NjEzYzkwOTI1
NTcwNDU2ZTk1MDg0NTFlNWUxYzAzZGUxNmVjMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
d2FzbS9zdHJlc3Mvc2hhcmVkLXdhc20tbWVtb3J5LWJ1ZmZlci5qcwpAQCAtMCwwICsxLDI0IEBA
CitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJworCitsZXQgcGFnZVNpemUg
PSA2NCA8PCAxMDsKK2xldCBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsKKyAgICBp
bml0aWFsOiAxLAorICAgIG1heGltdW06IDUsCisgICAgc2hhcmVkOiB0cnVlLAorfSk7CitsZXQg
YnVmZmVyMSA9IG1lbW9yeS5idWZmZXI7Cithc3NlcnQuZXEoYnVmZmVyMS5ieXRlTGVuZ3RoLCBw
YWdlU2l6ZSAqIDEpOworYXNzZXJ0LmVxKGJ1ZmZlcjEsIG1lbW9yeS5idWZmZXIpOworCittZW1v
cnkuZ3JvdygxKTsKK2xldCBidWZmZXIyID0gbWVtb3J5LmJ1ZmZlcjsKK2Fzc2VydC5lcShidWZm
ZXIxLmJ5dGVMZW5ndGgsIHBhZ2VTaXplICogMSk7Cithc3NlcnQuZXEoYnVmZmVyMi5ieXRlTGVu
Z3RoLCBwYWdlU2l6ZSAqIDIpOworYXNzZXJ0LmZhbHN5KGJ1ZmZlcjEgPT09IGJ1ZmZlcjIpOwor
CitsZXQgYnl0ZXMxID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyMSk7CitsZXQgYnl0ZXMyID0gbmV3
IFVpbnQ4QXJyYXkoYnVmZmVyMik7CitieXRlczFbMF0gPSA0MjsKK2Fzc2VydC5lcShieXRlczJb
MF0sIDQyKTsKK2J5dGVzMlswXSA9IDQzOworYXNzZXJ0LmVxKGJ5dGVzMVswXSwgNDMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414109</attachid>
            <date>2020-11-13 16:49:03 -0800</date>
            <delta_ts>2020-11-14 01:45:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218693-20201113164901.patch</filename>
            <type>text/plain</type>
            <size>162414</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZjBhYWIzMjBjNzJhMWYwNTViYTlmYTE4MjNmNTYzYjk0MmQ4NmE5Li40YTZlYzFmMmYwYmYwZTQ3
YzZlOGM0ZjFiZDg2MTJmZjhiN2RjZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODQgQEAKKzIwMjAtMTEtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgV2ViQXNzZW1ibHkuTWVtb3J5IHdpdGggc2hh
cmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg2
OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogbGxpbnQvTExJbnRQQ1Jhbmdlcy5oOgorICAgICAgICAoSlND
OjpMTEludDo6aXNXYXNtTExJbnRQQyk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc206CisgICAgICAgICogbGxpbnQvV2ViQXNzZW1ibHkuYXNtOgorICAgICAgICAqIHJ1
bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Om92ZXJyaWRlRGVmYXVsdHMpOgorICAg
ICAgICAoSlNDOjpPcHRpb25zOjppbml0aWFsaXplKToKKyAgICAgICAgKiB3YXNtL1dhc21BaXJJ
UkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjpBaXJJ
UkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjpyZXN0b3Jl
V2ViQXNzZW1ibHlHbG9iYWxTdGF0ZSk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJh
dG9yOjphZGRDdXJyZW50TWVtb3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0
b3I6OmVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWly
SVJHZW5lcmF0b3I6OmFkZENhbGwpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRv
cjo6YWRkQ2FsbEluZGlyZWN0KToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OnJlc3RvcmVXZWJBc3NlbWJseUdsb2Jh
bFN0YXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkQ3VycmVudE1l
bW9yeSk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmVtaXRDaGVja0FuZFBy
ZXBhcmVQb2ludGVyKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkQ2Fs
bCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCk6
CisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ondh
c21Ub1dhc20pOgorICAgICAgICAqIHdhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHA6Cisg
ICAgICAgIChKU0M6Oldhc206OnRyYXBIYW5kbGVyKToKKyAgICAgICAgKEpTQzo6V2FzbTo6ZW5h
YmxlRmFzdE1lbW9yeSk6CisgICAgICAgIChKU0M6Oldhc206OnByZXBhcmVGYXN0TWVtb3J5KToK
KyAgICAgICAgKiB3YXNtL1dhc21JbnN0YW5jZS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0
YW5jZTo6Y2FjaGVkTWVtb3J5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6
OmNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206Oklu
c3RhbmNlOjp1cGRhdGVDYWNoZWRNZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5j
ZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUpOgorICAgICAgICAoSlNDOjpXYXNt
OjpJbnN0YW5jZTo6Y2FjaGVkTWVtb3J5U2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Oldhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUpOiBEZWxldGVkLgor
ICAgICAgICAqIHdhc20vV2FzbU1lbW9yeS5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok1lbW9y
eUhhbmRsZTo6TWVtb3J5SGFuZGxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5SGFuZGxl
Ojp+TWVtb3J5SGFuZGxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5OjpNZW1vcnkpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Oldhc206
Ok1lbW9yeTo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5OjphZGRyZXNz
SXNJbkFjdGl2ZUdyb3dhYmxlTWVtb3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5Ojpn
cm93U2hhcmVkKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5Ojpncm93KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6TWVtb3J5OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVt
b3J5Ojp+TWVtb3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5OjphZGRy
ZXNzSXNJbkFjdGl2ZUZhc3RNZW1vcnkpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbU1l
bW9yeS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmFkZHJlc3NJc0luQWN0aXZlR3Jv
d2FibGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Om9wZXJhdG9yIGJvb2wg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Om1lbW9yeSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6c2l6ZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6c2l6ZUluUGFnZXMgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmluaXRpYWwgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Om1heGltdW0gY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Om1vZGUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmNoZWNrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
V2FzbTo6TWVtb3J5OjpvZmZzZXRPZk1lbW9yeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldh
c206Ok1lbW9yeTo6b2Zmc2V0T2ZTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6
TWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUZhc3RNZW1vcnkpOiBEZWxldGVkLgorICAgICAgICAq
IHdhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGlu
bmVkUmVnaXN0ZXJJbmZvOjpnZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5uZWRSZWdpc3Rl
ckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5SW5m
b3JtYXRpb24uaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGlubmVkUmVnaXN0ZXJJbmZvOjp0b1Nh
dmUgY29uc3QpOgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeU1vZGUuY3BwOgorICAgICAgICAo
SlNDOjpXYXNtOjptYWtlU3RyaW5nKToKKyAgICAgICAgKiB3YXNtL1dhc21NZW1vcnlNb2RlLmg6
CisgICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNy
ZWF0ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5z
dGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnRyeUNyZWF0
ZSk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6YnVmZmVyKToKKyAgICAgICAgKEpTQzo6SlNXZWJB
c3NlbWJseU1lbW9yeTo6Z3Jvd1N1Y2Nlc3NDYWxsYmFjayk6CisgICAgICAgICogd2FzbS9qcy9K
U1dlYkFzc2VtYmx5TWVtb3J5Lmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlGdW5jdGlvbjo6anNDYWxsRW50cnlw
b2ludFNsb3cpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rv
ci5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAg
ICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJs
eU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
OjpldmFsdWF0ZSk6CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxsaW50L0xM
SW50UENSYW5nZXMuaDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmlzV2FzbUxMSW50UEMpOgorICAg
ICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L1dl
YkFzc2VtYmx5LmFzbToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Lmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0b1dy
YXBwZWRBbGxvd1NoYXJlZCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAg
ICAgKEpTQzo6b3ZlcnJpZGVEZWZhdWx0cyk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRp
YWxpemUpOgorICAgICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OkFpcklSR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OnJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZEN1cnJlbnRNZW1vcnkpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENoZWNrQW5kUHJlcGFyZVBv
aW50ZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbCk6Cisg
ICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QpOgorICAg
ICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpC
M0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdl
bmVyYXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUpOgorICAgICAgICAoSlNDOjpX
YXNtOjpCM0lSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QjNJUkdlbmVyYXRvcjo6ZW1pdENoZWNrQW5kUHJlcGFyZVBvaW50ZXIpOgorICAgICAgICAo
SlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRDYWxsKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
QjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KToKKyAgICAgICAgKiB3YXNtL1dhc21CaW5k
aW5nLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvV2FzbSk6CisgICAgICAgICogd2Fz
bS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6dHJhcEhh
bmRsZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjplbmFibGVGYXN0TWVtb3J5KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6cHJlcGFyZUZhc3RNZW1vcnkpOgorICAgICAgICAqIHdhc20vV2FzbUluc3Rh
bmNlLmg6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjpjYWNoZWRNZW1vcnkgY29uc3Qp
OgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6Y2FjaGVkQm91bmRzQ2hlY2tpbmdTaXpl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OnVwZGF0ZUNhY2hlZE1lbW9y
eSk6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZEJvdW5kc0No
ZWNraW5nU2l6ZSk6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjpjYWNoZWRNZW1vcnlT
aXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6Om9mZnNl
dE9mQ2FjaGVkTWVtb3J5U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5SGFuZGxlOjpNZW1vcnlIYW5kbGUpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnlIYW5kbGU6On5NZW1vcnlIYW5kbGUpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpNZW1vcnk6Ok1lbW9yeSk6CisgICAgICAgIChKU0M6Oldhc206Ok1lbW9y
eTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmFkZHJlc3NJc0luQWN0aXZlR3Jvd2FibGVNZW1vcnkp
OgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Omdyb3dTaGFyZWQpOgorICAgICAgICAoSlND
OjpXYXNtOjpNZW1vcnk6Omdyb3cpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmR1bXAg
Y29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6On5NZW1vcnkpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmFkZHJlc3NJc0luQWN0aXZlRmFzdE1lbW9yeSk6
IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5Lmg6CisgICAgICAgIChKU0M6Oldh
c206Ok1lbW9yeTo6YWRkcmVzc0lzSW5BY3RpdmVHcm93YWJsZU1lbW9yeSk6CisgICAgICAgIChK
U0M6Oldhc206Ok1lbW9yeTo6b3BlcmF0b3IgYm9vbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Oldhc206Ok1lbW9yeTo6bWVtb3J5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6V2FzbTo6TWVtb3J5OjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2Fz
bTo6TWVtb3J5OjpzaXplSW5QYWdlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldh
c206Ok1lbW9yeTo6aW5pdGlhbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206
Ok1lbW9yeTo6bWF4aW11bSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206Ok1l
bW9yeTo6bW9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6
Y2hlY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Om9mZnNldE9mTWVt
b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5OjpvZmZzZXRPZlNpemUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmFkZHJlc3NJc0luQWN0aXZl
RmFzdE1lbW9yeSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRp
b24uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OmdldCk6Cisg
ICAgICAgIChKU0M6Oldhc206OlBpbm5lZFJlZ2lzdGVySW5mbzo6UGlubmVkUmVnaXN0ZXJJbmZv
KToKKyAgICAgICAgKiB3YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oOgorICAgICAgICAoSlND
OjpXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OnRvU2F2ZSBjb25zdCk6CisgICAgICAgICogd2Fz
bS9XYXNtTWVtb3J5TW9kZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206Om1ha2VTdHJpbmcpOgor
ICAgICAgICAqIHdhc20vV2FzbU1lbW9yeU1vZGUuaDoKKyAgICAgICAgKiB3YXNtL2pzL0pTVG9X
YXNtLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6Y3JlYXRlSlNUb1dhc21XcmFwcGVyKToKKyAg
ICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6
OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL0pT
V2ViQXNzZW1ibHlNZW1vcnkuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5TWVtb3J5
OjpidWZmZXIpOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5TWVtb3J5Ojpncm93U3VjY2Vz
c0NhbGxiYWNrKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuaDoKKyAg
ICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpX
ZWJBc3NlbWJseUZ1bmN0aW9uOjpqc0NhbGxFbnRyeXBvaW50U2xvdyk6CisgICAgICAgICogd2Fz
bS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TWVt
b3J5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKToKKwogMjAyMC0xMS0x
MyAgU2VyZ2V5IFJ1YmFub3YgIDxjaGkxODdAZ21haWwuY29tPgogCiAgICAgICAgIFdlYkFzc2Vt
Ymx5OiBvcGNvZGVzIGZvciB0YWJsZS5ncm93IGFuZCB0YWJsZS5zaXplIGFyZSBtaXhlZCB1cApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDZmNDYxNzBhYWViNTJlYjVjOGM0Y2MwZmNjYTA4MjhmNzJiNmI1MDIuLjAw
ZThiZTRlNWRmMmNmNGI0ZWE0NjFkYjM2NTBiZTU5MzdjNmYzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NCBAQAorMjAyMC0xMS0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBXZWJBc3NlbWJseS5NZW1vcnkgd2l0aCBzaGFy
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODY5
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VyaWFsaXphdGlvbkNvbnRleHQ6OmluaXRpYWxp
emVWTSk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJpbmRpbmdzL0lETFR5cGVzLmg6CisgICAgICAgICogYmluZGluZ3MvanMvQ29tbW9u
Vk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tbW9uVk1TbG93KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUNvbnZlcnRCdWZmZXJTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRl
dGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyOjpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnZlcnRlcjxJRExBcnJheUJ1ZmZlcj46OmNvbnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udmVydGVyPElETERhdGFWaWV3Pjo6Y29udmVydCk6CisgICAgICAgIChXZWJDb3JlOjpDb252
ZXJ0ZXI8SURMSW50OEFycmF5Pjo6Y29udmVydCk6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0
ZXI8SURMSW50MTZBcnJheT46OmNvbnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udmVydGVy
PElETEludDMyQXJyYXk+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJ
RExVaW50OEFycmF5Pjo6Y29udmVydCk6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURM
VWludDE2QXJyYXk+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJRExV
aW50MzJBcnJheT46OmNvbnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udmVydGVyPElETFVp
bnQ4Q2xhbXBlZEFycmF5Pjo6Y29udmVydCk6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8
SURMRmxvYXQzMkFycmF5Pjo6Y29udmVydCk6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8
SURMRmxvYXQ2NEFycmF5Pjo6Y29udmVydCk6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8
SURMQXJyYXlCdWZmZXJWaWV3Pjo6Y29udmVydCk6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0
ZXI8SURMQWxsb3dTaGFyZWRBZGFwdG9yPFQ+Pjo6Y29udmVydCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0VW5pb24uaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpz
ZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpDbG9uZVNlcmlh
bGl6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSWZUZXJtaW5h
bCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OkNsb25lRGVzZXJpYWxpemVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkVGVybWluYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjb21wdXRlTWVt
b3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2Vy
aWFsaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29ybGQpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9X
ZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29y
ZVR5cGVkQXJyYXlDb250cm9sbGVyOjpXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyOjppc0F0b21pY3NXYWl0
QWxsb3dlZE9uQ3VycmVudFRocmVhZCk6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZVR5
cGVkQXJyYXlDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG06CisgICAgICAgIChJc0Fubm90YXRlZFR5cGUpOgorICAgICAgICAoR2V0QW5u
b3RhdGVkSURMVHlwZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVz
Lmpzb246CisgICAgICAgICogZG9tL1RleHREZWNvZGVyLmlkbDoKKyAgICAgICAgKiBkb20vVGV4
dEVuY29kZXIuaWRsOgorICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OkRl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJH
bG9iYWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU6Oldvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmg6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6Oldvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JX
b3JrbGV0U2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFk
VHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpX
b3JrbGV0R2xvYmFsU2NvcGUpOgorCiAyMDIwLTExLTEzICBDbGF1ZGlvIFNhYXZlZHJhICA8Y3Nh
YXZlZHJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgTm9uLXVuaWZpZWQgYnVpbGQgZml4ZXMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMzhhZTZjZTExYTg5YmIyY2E2NTdj
NThjZjgyZDdlNDc1MThhOTk1MS4uMDUzM2E4MWZkOTYxMzdiZTk2MDdjNjdmMjNlMjAzMTljZjQw
MTYwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTA4OCw2ICsxMDg4
LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICB3
YXNtL1dhc21UaWVyVXBDb3VudC5oCiAKICAgICB3YXNtL2pzL0pTV2ViQXNzZW1ibHkuaAorICAg
IHdhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5oCiAgICAgd2FzbS9qcy9KU1dlYkFzc2VtYmx5
TW9kdWxlLmgKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMwZWVmMGJjMzBl
MDJjZDg3NmM5MzEyZDcxZWQ2ZTAxMjdkM2U0NTguLmJjMDNjNzhjYjExODFmZjIyMzlhZTFiMTFk
M2Y0NGM4ZWE0ZmQ4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTc0LDcg
KzE1NzQsNyBAQAogCQlBRDAwNjU5RTFFQ0FDODEyMDAwQ0E5MjYgLyogV2FzbUxpbWl0cy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQwMDY1OUQxRUNB
QzdGRTAwMENBOTI2IC8qIFdhc21MaW1pdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBRDJGQ0JFMzFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJB
c3NlbWJseUNvbXBpbGVFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUQyRkNCQTcxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3IuaCAqLzsgfTsKIAkJQUQyRkNCRTUxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQUQyRkNCQTkxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlJbnN0YW5jZS5o
ICovOyB9OwotCQlBRDJGQ0JFNzFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1lbW9y
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNC
QUIxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNZW1vcnkuaCAqLzsgfTsKKwkJQUQy
RkNCRTcxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNZW1vcnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkFCMURCNThEQTQwMEIz
RTczNiAvKiBKU1dlYkFzc2VtYmx5TWVtb3J5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQUQyRkNCRTkxREI1OERBRDAwQjNFNzM2IC8qIEpTV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEFEMkZDQkFEMURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yLmggKi87IH07CiAJCUFEMkZDQkVCMURCNThEQUQwMEIzRTczNiAvKiBKU1dlYkFz
c2VtYmx5VGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEFEMkZDQkFGMURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5VGFibGUuaCAqLzsg
fTsKIAkJQUQyRkNCRUQxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9y
Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEFEMkZDQkIxMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNv
bnN0cnVjdG9yLmggKi87IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRQQ1Jhbmdlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50UENS
YW5nZXMuaAppbmRleCA0NGY0ZWY5MTAzZDdlMjE2Mjk1OWRmYTU2ODJlYTZjYjFiNTI4NzEzLi42
NGIyZGU4OTI0ZTg3MWQ5NGZiYWNkYTJmZDEwZDg4MjdhYjIwYzA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRQQ1Jhbmdlcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFBDUmFuZ2VzLmgKQEAgLTM1LDYgKzM1LDEwIEBAIG5hbWVz
cGFjZSBMTEludCB7CiBleHRlcm4gIkMiIHsKICAgICB2b2lkIGxsaW50UENSYW5nZVN0YXJ0KCk7
CiAgICAgdm9pZCBsbGludFBDUmFuZ2VFbmQoKTsKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisg
ICAgdm9pZCB3YXNtTExJbnRQQ1JhbmdlU3RhcnQoKTsKKyAgICB2b2lkIHdhc21MTEludFBDUmFu
Z2VFbmQoKTsKKyNlbmRpZgogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNMTEludFBDKHZvaWQq
IHBjKQpAQCAtNDYsNiArNTAsMTcgQEAgQUxXQVlTX0lOTElORSBib29sIGlzTExJbnRQQyh2b2lk
KiBwYykKICAgICByZXR1cm4gbGxpbnRTdGFydCA8PSBwY0FzSW50ICYmIHBjQXNJbnQgPD0gbGxp
bnRFbmQ7CiB9CiAKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCitBTFdBWVNfSU5MSU5FIGJvb2wg
aXNXYXNtTExJbnRQQyh2b2lkKiBwYykKK3sKKyAgICB1aW50cHRyX3QgcGNBc0ludCA9IGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KHBjKTsKKyAgICB1aW50cHRyX3Qgc3RhcnQgPSB1bnRhZ0NvZGVQ
dHI8dWludHB0cl90LCBDRnVuY3Rpb25QdHJUYWc+KHdhc21MTEludFBDUmFuZ2VTdGFydCk7Cisg
ICAgdWludHB0cl90IGVuZCA9IHVudGFnQ29kZVB0cjx1aW50cHRyX3QsIENGdW5jdGlvblB0clRh
Zz4od2FzbUxMSW50UENSYW5nZUVuZCk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3RhcnQgPCBlbmQp
OworICAgIHJldHVybiBzdGFydCA8PSBwY0FzSW50ICYmIHBjQXNJbnQgPD0gZW5kOworfQorI2Vu
ZGlmCisKICNpZiAhRU5BQkxFKENfTE9PUCkKIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIExMSW50
UEMgPSBHUFJJbmZvOjpyZWdUNDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDgzZTI0YTA4MjEwYjk1ZWI4
NzAwM2JjZWUxNjgzYTA5OGE4ZjQ4NjcuLmJlZDVjZGY1ZTJhOTM0MjI3NDIxODdkMDMzYmFkZjBm
MzVhZTA0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KQEAgLTI0NjcsNyArMjQ2NywxMiBAQCBtYWNybyB3YXNtU2NvcGUo
KQogICAgICMgYnV0IHdlIGRvbid0IHdhbnQgdG8gaW50ZXJmZXJlIHdpdGggdGhlIExMSW50IG9w
Y29kZXMKICAgICBpbmNsdWRlIFdlYkFzc2VtYmx5CiBlbmQKKworZ2xvYmFsIF93YXNtTExJbnRQ
Q1JhbmdlU3RhcnQKK193YXNtTExJbnRQQ1JhbmdlU3RhcnQ6CiB3YXNtU2NvcGUoKQorZ2xvYmFs
IF93YXNtTExJbnRQQ1JhbmdlRW5kCitfd2FzbUxMSW50UENSYW5nZUVuZDoKIAogZWxzZQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQppbmRleCA4YmZmYzhh
Njk3ZDJlNmU0ZjIwZGU5NjQwNWE1ZjNkMjRmOGExZWJjLi5kZjhiYmZhMWQ0NzQwNGI3MDdiN2Rj
ZGZjOWJkM2ZmNmZlMzI5MWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvV2ViQXNzZW1ibHkuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJB
c3NlbWJseS5hc20KQEAgLTQ1LDcgKzQ1LDcgQEAgY29uc3QgTnVtYmVyT2ZXYXNtQXJndW1lbnRz
ID0gTnVtYmVyT2ZXYXNtQXJndW1lbnRHUFJzICsgTnVtYmVyT2ZXYXNtQXJndW1lbnRGUFIKICMg
VGhlc2UgbXVzdCBtYXRjaCB0aGUgZGVmaW5pdGlvbiBpbiBXYXNtTWVtb3J5SW5mb3JtYXRpb24u
Y3BwCiBjb25zdCB3YXNtSW5zdGFuY2UgPSBjc3IwCiBjb25zdCBtZW1vcnlCYXNlID0gY3NyMwot
Y29uc3QgbWVtb3J5U2l6ZSA9IGNzcjQKK2NvbnN0IGJvdW5kc0NoZWNraW5nU2l6ZSA9IGNzcjQK
IAogIyBUaGlzIG11c3QgbWF0Y2ggdGhlIGRlZmluaXRpb24gaW4gTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KIGlmIFg4Nl82NApAQCAtMTg3LDcgKzE4Nyw3IEBAIGVuZAogIyBXYXNtIHNwZWNpZmlj
IGhlbHBlcnMKIAogbWFjcm8gcHJlc2VydmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQotICAgICMg
Tk9URTogV2UgaW50ZW50aW9uYWxseSBkb24ndCBzYXZlIG1lbW9yeUJhc2UgYW5kIG1lbW9yeVNp
emUgaGVyZS4gU2VlIHRoZSBjb21tZW50CisgICAgIyBOT1RFOiBXZSBpbnRlbnRpb25hbGx5IGRv
bid0IHNhdmUgbWVtb3J5QmFzZSBhbmQgYm91bmRzQ2hlY2tpbmdTaXplIGhlcmUuIFNlZSB0aGUg
Y29tbWVudAogICAgICMgaW4gcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgpIGJlbG93IGZv
ciB3aHkuCiAgICAgc3VicCBDYWxsZWVTYXZlU3BhY2VTdGFja0FsaWduZWQsIHNwCiAgICAgaWYg
QVJNNjQgb3IgQVJNNjRFCkBAIC0yMDEsNyArMjAxLDcgQEAgbWFjcm8gcHJlc2VydmVDYWxsZWVT
YXZlc1VzZWRCeVdhc20oKQogZW5kCiAKIG1hY3JvIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdh
c20oKQotICAgICMgTk9URTogV2UgaW50ZW50aW9uYWxseSBkb24ndCByZXN0b3JlIG1lbW9yeUJh
c2UgYW5kIG1lbW9yeVNpemUgaGVyZS4gVGhlc2UgYXJlIHNhdmVkCisgICAgIyBOT1RFOiBXZSBp
bnRlbnRpb25hbGx5IGRvbid0IHJlc3RvcmUgbWVtb3J5QmFzZSBhbmQgYm91bmRzQ2hlY2tpbmdT
aXplIGhlcmUuIFRoZXNlIGFyZSBzYXZlZAogICAgICMgYW5kIHJlc3RvcmVkIHdoZW4gZW50ZXJp
bmcgV2FzbSBieSB0aGUgSlNUb1dhc20gd3JhcHBlciBhbmQgY2hhbmdlcyB0byB0aGVtIGFyZSBt
ZWFudAogICAgICMgdG8gYmUgb2JzZXJ2YWJsZSB3aXRoaW4gdGhlIHNhbWUgV2FzbSBtb2R1bGUu
CiAgICAgaWYgQVJNNjQgb3IgQVJNNjRFCkBAIC0yNDAsOCArMjQwLDggQEAgZW5kCiAKIG1hY3Jv
IHJlbG9hZE1lbW9yeVJlZ2lzdGVyc0Zyb21JbnN0YW5jZShpbnN0YW5jZSwgc2NyYXRjaDEsIHNj
cmF0Y2gyKQogICAgIGxvYWRwIFdhc206Okluc3RhbmNlOjptX2NhY2hlZE1lbW9yeVtpbnN0YW5j
ZV0sIG1lbW9yeUJhc2UKLSAgICBsb2FkaSBXYXNtOjpJbnN0YW5jZTo6bV9jYWNoZWRNZW1vcnlT
aXplW2luc3RhbmNlXSwgbWVtb3J5U2l6ZQotICAgIGNhZ2VkUHJpbWl0aXZlKG1lbW9yeUJhc2Us
IG1lbW9yeVNpemUsIHNjcmF0Y2gxLCBzY3JhdGNoMikKKyAgICBsb2FkaSBXYXNtOjpJbnN0YW5j
ZTo6bV9jYWNoZWRCb3VuZHNDaGVja2luZ1NpemVbaW5zdGFuY2VdLCBib3VuZHNDaGVja2luZ1Np
emUKKyAgICBjYWdlZFByaW1pdGl2ZShtZW1vcnlCYXNlLCBib3VuZHNDaGVja2luZ1NpemUsIHNj
cmF0Y2gxLCBzY3JhdGNoMikKIGVuZAogCiBtYWNybyB0aHJvd0V4Y2VwdGlvbihleGNlcHRpb24p
CkBAIC04NTYsNyArODU2LDkgQEAgd2FzbU9wKGNhbGxfaW5kaXJlY3Rfbm9fdGxzLCBXYXNtQ2Fs
bEluZGlyZWN0Tm9UbHMsIG1hY3JvKGN0eCkKIGVuZCkKIAogd2FzbU9wKGN1cnJlbnRfbWVtb3J5
LCBXYXNtQ3VycmVudE1lbW9yeSwgbWFjcm8oY3R4KQotICAgIGxvYWRwIFdhc206Okluc3RhbmNl
OjptX2NhY2hlZE1lbW9yeVNpemVbd2FzbUluc3RhbmNlXSwgdDAKKyAgICBsb2FkcCBXYXNtOjpJ
bnN0YW5jZTo6bV9tZW1vcnlbd2FzbUluc3RhbmNlXSwgdDAKKyAgICBsb2FkcCBXYXNtOjpNZW1v
cnk6Om1faGFuZGxlW3QwXSwgdDAKKyAgICBsb2FkcCBXYXNtOjpNZW1vcnlIYW5kbGU6Om1fc2l6
ZVt0MF0sIHQwCiAgICAgdXJzaGlmdHEgMTYsIHQwCiAgICAgcmV0dXJucShjdHgsIHQwKQogZW5k
KQpAQCAtODc0LDcgKzg3Niw3IEBAIGVuZCkKICMgdXNlcyBvZmZzZXQgYXMgc2NyYXRjaCBhbmQg
cmV0dXJucyByZXN1bHQgb24gcG9pbnRlcgogbWFjcm8gZW1pdENoZWNrQW5kUHJlcGFyZVBvaW50
ZXIoY3R4LCBwb2ludGVyLCBvZmZzZXQsIHNpemUpCiAgICAgbGVhcCBzaXplIC0gMVtwb2ludGVy
LCBvZmZzZXRdLCB0NQotICAgIGJwYiB0NSwgbWVtb3J5U2l6ZSwgLmNvbnRpbnVhdGlvbgorICAg
IGJwYiB0NSwgYm91bmRzQ2hlY2tpbmdTaXplLCAuY29udGludWF0aW9uCiAgICAgdGhyb3dFeGNl
cHRpb24oT3V0T2ZCb3VuZHNNZW1vcnlBY2Nlc3MpCiAuY29udGludWF0aW9uOgogICAgIGFkZHAg
bWVtb3J5QmFzZSwgcG9pbnRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggZThjMzFkODA3MDA5Nzc5NWE0
ZDA0YjA0M2UzMjlhNDZiNjM4MjM5Ny4uY2ViNDg1MWFjYTJjN2UxZDIxNDUwNTM0ODZiYTUyMGI1
ODRjNGMyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0yODcsNiArMjg3LDggQEAgY2xhc3MgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcgZmluYWwgOiBwdWJsaWMgSlNBcnJheUJ1ZmZlclZpZXcgewogCiAg
ICAgLy8gVGhpcyBpcyB0aGUgZGVmYXVsdCBET00gdW53cmFwcGluZy4gSXQgY2FsbHMgdG9VbnNo
YXJlZE5hdGl2ZVR5cGVkVmlldygpLgogICAgIHN0YXRpYyBSZWZQdHI8dHlwZW5hbWUgQWRhcHRv
cjo6Vmlld1R5cGU+IHRvV3JhcHBlZChWTSYsIEpTVmFsdWUpOworICAgIC8vIFtBbGxvd1NoYXJl
ZF0gYW5ub3RhdGlvbiBhbGxvd3MgYWNjZXB0aW5nIFR5cGVkQXJyYXkgb3JpZ2luYXRlZCBmcm9t
IFNoYXJlZEFycmF5QnVmZmVyLgorICAgIHN0YXRpYyBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6
Vmlld1R5cGU+IHRvV3JhcHBlZEFsbG93U2hhcmVkKFZNJiwgSlNWYWx1ZSk7CiAgICAgCiBwcml2
YXRlOgogICAgIGZyaWVuZCBzdHJ1Y3QgVHlwZWRBcnJheUNsYXNzSW5mb3M7CkBAIC0zOTIsNCAr
Mzk0LDExIEBAIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OnRvV3JhcHBlZChWCiAgICAgcmV0dXJuIEpTQzo6dG9VbnNo
YXJlZE5hdGl2ZVR5cGVkVmlldzxBZGFwdG9yPih2bSwgdmFsdWUpOwogfQogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgorUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dG9XcmFwcGVkQWxsb3dTaGFyZWQoVk0mIHZt
LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIHJldHVybiBKU0M6OnRvUG9zc2libHlTaGFyZWROYXRp
dmVUeXBlZFZpZXc8QWRhcHRvcj4odm0sIHZhbHVlKTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKaW5kZXggOTU4OTg5
YzkyM2E0ZmFjYmY2NTc1Y2RkZjlmMTJlZDVlYWUxOGYyOC4uYzI3YjE1NmIxOWIwMGY0OWJjNmUw
Yjk4ZjA4NDZhYjA2MjM4MGZmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5jcHAKQEAgLTM2Nyw2ICszNjcsNyBAQCBzdGF0aWMgdm9pZCBvdmVycmlkZURlZmF1bHRz
KCkKIAogI2lmICFFTkFCTEUoV0VCQVNTRU1CTFlfRkFTVF9NRU1PUlkpCiAgICAgT3B0aW9uczo6
dXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCkgPSBmYWxzZTsKKyAgICBPcHRpb25zOjp1c2VTaGFy
ZWRBcnJheUJ1ZmZlcigpID0gZmFsc2U7CiAjZW5kaWYKIAogI2lmICFIQVZFKE1BQ0hfRVhDRVBU
SU9OUykKQEAgLTY1OSwxMyArNjYwLDE0IEBAIHZvaWQgT3B0aW9uczo6aW5pdGlhbGl6ZSgpCiAj
ZW5kaWYKIAogI2lmIEFTQU5fRU5BQkxFRCAmJiBPUyhMSU5VWCkgJiYgRU5BQkxFKFdFQkFTU0VN
QkxZX0ZBU1RfTUVNT1JZKQotICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5
RmFzdE1lbW9yeSgpKSB7CisgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlG
YXN0TWVtb3J5KCkgfHwgT3B0aW9uczo6dXNlU2hhcmVkQXJyYXlCdWZmZXIoKSkgewogICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGFzYW5PcHRpb25zID0gZ2V0ZW52KCJBU0FOX09QVElPTlMi
KTsKICAgICAgICAgICAgICAgICBib29sIG9rVG9Vc2VXZWJBc3NlbWJseUZhc3RNZW1vcnkgPSBh
c2FuT3B0aW9ucwogICAgICAgICAgICAgICAgICAgICAmJiAoc3Ryc3RyKGFzYW5PcHRpb25zLCAi
YWxsb3dfdXNlcl9zZWd2X2hhbmRsZXI9MSIpIHx8IHN0cnN0cihhc2FuT3B0aW9ucywgImhhbmRs
ZV9zZWd2PTAiKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFva1RvVXNlV2ViQXNzZW1ibHlGYXN0
TWVtb3J5KSB7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiV0FSTklORzogQVNBTiBp
bnRlcmZlcmVzIHdpdGggSlNDIHNpZ25hbCBoYW5kbGVyczsgdXNlV2ViQXNzZW1ibHlGYXN0TWVt
b3J5IHdpbGwgYmUgZGlzYWJsZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigi
V0FSTklORzogQVNBTiBpbnRlcmZlcmVzIHdpdGggSlNDIHNpZ25hbCBoYW5kbGVyczsgdXNlV2Vi
QXNzZW1ibHlGYXN0TWVtb3J5IGFuZCB1c2VTaGFyZWRBcnJheUJ1ZmZlciB3aWxsIGJlIGRpc2Fi
bGVkLiIpOwogICAgICAgICAgICAgICAgICAgICBPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RN
ZW1vcnkoKSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBPcHRpb25zOjp1c2VTaGFyZWRB
cnJheUJ1ZmZlcigpID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJH
ZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJh
dG9yLmNwcAppbmRleCA0M2QwYzg3MmVlNGM2M2I0ZDU2YjZmMGUzNDYyMzUzMzNlODRiNzkzLi5m
MDM3ZGExMzM5ZDM3YzJiYmFlM2E5ZWI4Y2YzMDY1NGYxMjIyMzc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTY4MCw3ICs2
ODAsNyBAQCBjbGFzcyBBaXJJUkdlbmVyYXRvciB7CiAgICAgVmVjdG9yPFR5cGVkVG1wPiBtX2xv
Y2FsczsKICAgICBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIG1fdW5saW5rZWRXYXNt
VG9XYXNtQ2FsbHM7IC8vIExpc3QgZWFjaCBjYWxsIHNpdGUgYW5kIHRoZSBmdW5jdGlvbiBpbmRl
eCB3aG9zZSBhZGRyZXNzIGl0IHNob3VsZCBiZSBwYXRjaGVkIHdpdGguCiAgICAgR1BSUmVnIG1f
bWVtb3J5QmFzZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKLSAgICBHUFJSZWcgbV9tZW1vcnlTaXpl
R1BSIHsgSW52YWxpZEdQUlJlZyB9OworICAgIEdQUlJlZyBtX2JvdW5kc0NoZWNraW5nU2l6ZUdQ
UiB7IEludmFsaWRHUFJSZWcgfTsKICAgICBHUFJSZWcgbV93YXNtQ29udGV4dEluc3RhbmNlR1BS
IHsgSW52YWxpZEdQUlJlZyB9OwogICAgIGJvb2wgbV9tYWtlc0NhbGxzIHsgZmFsc2UgfTsKIApA
QCAtNzcyLDggKzc3Miw4IEBAIEFpcklSR2VuZXJhdG9yOjpBaXJJUkdlbmVyYXRvcihjb25zdCBN
b2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgQjM6OlByb2NlZHVyZSYgcHJvCiAgICAgICAgIG1fY29k
ZS5waW5SZWdpc3RlcihtX3dhc21Db250ZXh0SW5zdGFuY2VHUFIpOwogCiAgICAgaWYgKG1vZGUg
IT0gTWVtb3J5TW9kZTo6U2lnbmFsaW5nKSB7Ci0gICAgICAgIG1fbWVtb3J5U2l6ZUdQUiA9IHBp
bm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyOwotICAgICAgICBtX2NvZGUucGluUmVnaXN0ZXIobV9tZW1v
cnlTaXplR1BSKTsKKyAgICAgICAgbV9ib3VuZHNDaGVja2luZ1NpemVHUFIgPSBwaW5uZWRSZWdz
LmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyOworICAgICAgICBtX2NvZGUucGluUmVnaXN0ZXIo
bV9ib3VuZHNDaGVja2luZ1NpemVHUFIpOwogICAgIH0KIAogICAgIG1fY29kZS5zZXROdW1FbnRy
eXBvaW50cygxKTsKQEAgLTkxOCw3ICs5MTgsNyBAQCB2b2lkIEFpcklSR2VuZXJhdG9yOjpyZXN0
b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVkU3RhY2tMaW1pdCByZXN0bwog
ICAgICAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8qIHBpbm5lZFJlZ3MgPSAmUGlubmVkUmVn
aXN0ZXJJbmZvOjpnZXQoKTsKICAgICAgICAgUmVnaXN0ZXJTZXQgY2xvYmJlcnM7CiAgICAgICAg
IGNsb2JiZXJzLnNldChwaW5uZWRSZWdzLT5iYXNlTWVtb3J5UG9pbnRlcik7Ci0gICAgICAgIGNs
b2JiZXJzLnNldChwaW5uZWRSZWdzLT5zaXplUmVnaXN0ZXIpOworICAgICAgICBjbG9iYmVycy5z
ZXQocGlubmVkUmVncy0+Ym91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIpOwogICAgICAgICBpZiAo
IWlzQVJNNjQoKSkKICAgICAgICAgICAgIGNsb2JiZXJzLnNldChSZWdpc3RlclNldDo6bWFjcm9T
Y3JhdGNoUmVnaXN0ZXJzKCkpOwogCkBAIC05MzMsMTIgKzkzMywxMiBAQCB2b2lkIEFpcklSR2Vu
ZXJhdG9yOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVkU3RhY2tM
aW1pdCByZXN0bwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoW3Bpbm5lZFJlZ3Nd
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7CiAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxs
b3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICBHUFJSZWcgYmFzZU1lbW9yeSA9IHBpbm5lZFJl
Z3MtPmJhc2VNZW1vcnlQb2ludGVyOwotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hPclNpemUg
PSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUpID8gcGFyYW1zLmdwU2Ny
YXRjaCgwKSA6IHBpbm5lZFJlZ3MtPnNpemVSZWdpc3RlcjsKKyAgICAgICAgICAgIEdQUlJlZyBz
Y3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdl
OjpQcmltaXRpdmUpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IHBpbm5lZFJlZ3MtPmJvdW5kc0No
ZWNraW5nU2l6ZVJlZ2lzdGVyOwogCi0gICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MocGFyYW1zWzBdLmdwcigpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1v
cnlTaXplKCkpLCBwaW5uZWRSZWdzLT5zaXplUmVnaXN0ZXIpOworICAgICAgICAgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhcmFtc1swXS5ncHIoKSwgSW5zdGFuY2U6Om9m
ZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkpLCBwaW5uZWRSZWdzLT5ib3VuZHNDaGVj
a2luZ1NpemVSZWdpc3Rlcik7CiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MocGFyYW1zWzBdLmdwcigpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnko
KSksIGJhc2VNZW1vcnkpOwogCi0gICAgICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHkoR2ln
YWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgcGlubmVkUmVncy0+c2l6ZVJlZ2lzdGVyLCBz
Y3JhdGNoT3JTaXplKTsKKyAgICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2Fn
ZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLT5ib3VuZHNDaGVja2luZ1NpemVS
ZWdpc3Rlciwgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplKTsKICAgICAgICAgfSk7CiAKICAg
ICAgICAgZW1pdFBhdGNocG9pbnQoYmxvY2ssIHBhdGNocG9pbnQsIFRtcCgpLCBpbnN0YW5jZSk7
CkBAIC0xMTY4LDggKzExNjgsMTIgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ3VycmVudE1l
bW9yeShFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgYXV0byB0
ZW1wMSA9IGc2NCgpOwogICAgIGF1dG8gdGVtcDIgPSBnNjQoKTsKIAotICAgIFJFTEVBU0VfQVNT
RVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNp
emUoKSwgQjM6OldpZHRoNjQpKTsKLSAgICBhcHBlbmQoTW92ZSwgQXJnOjphZGRyKGluc3RhbmNl
VmFsdWUoKSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSwgdGVtcDEpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEluc3RhbmNlOjpvZmZzZXRP
Zk1lbW9yeSgpLCBCMzo6V2lkdGg2NCkpOworICAgIFJFTEVBU0VfQVNTRVJUKEFyZzo6aXNWYWxp
ZEFkZHJGb3JtKE1lbW9yeTo6b2Zmc2V0T2ZIYW5kbGUoKSwgQjM6OldpZHRoNjQpKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChBcmc6OmlzVmFsaWRBZGRyRm9ybShNZW1vcnlIYW5kbGU6Om9mZnNldE9m
U2l6ZSgpLCBCMzo6V2lkdGg2NCkpOworICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoaW5zdGFu
Y2VWYWx1ZSgpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSksIHRlbXAxKTsKKyAgICBhcHBl
bmQoTW92ZSwgQXJnOjphZGRyKHRlbXAxLCBNZW1vcnk6Om9mZnNldE9mSGFuZGxlKCkpLCB0ZW1w
MSk7CisgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcih0ZW1wMSwgTWVtb3J5SGFuZGxlOjpvZmZz
ZXRPZlNpemUoKSksIHRlbXAxKTsKICAgICBjb25zdGV4cHIgdWludDMyX3Qgc2hpZnRWYWx1ZSA9
IDE2OwogICAgIHN0YXRpY19hc3NlcnQoUGFnZUNvdW50OjpwYWdlU2l6ZSA9PSAxdWxsIDw8IHNo
aWZ0VmFsdWUsICJUaGlzIG11c3QgaG9sZCBmb3IgdGhlIGNvZGUgYmVsb3cgdG8gYmUgY29ycmVj
dC4iKTsKICAgICBhcHBlbmQoTW92ZSwgQXJnOjppbW0oMTYpLCB0ZW1wMik7CkBAIC0xMzYzLDE1
ICsxMzY3LDE2IEBAIGlubGluZSBBaXJJUkdlbmVyYXRvcjo6RXhwcmVzc2lvblR5cGUgQWlySVJH
ZW5lcmF0b3I6OmVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyCiAKICAgICBzd2l0Y2ggKG1fbW9k
ZSkgewogICAgIGNhc2UgTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmc6IHsKLSAgICAgICAgLy8g
V2UncmUgbm90IHVzaW5nIHNpZ25hbCBoYW5kbGluZyBhdCBhbGwsIHdlIG11c3QgdGhlcmVmb3Jl
IGNoZWNrIHRoYXQgbm8gbWVtb3J5IGFjY2VzcyBleGNlZWRzIHRoZSBjdXJyZW50IG1lbW9yeSBz
aXplLgotICAgICAgICBBU1NFUlQobV9tZW1vcnlTaXplR1BSKTsKKyAgICAgICAgLy8gSW4gYm91
bmQgY2hlY2tpbmcgbW9kZSwgd2hpbGUgc2hhcmVkIHdhc20gbWVtb3J5IHBhcnRpYWxseSByZWxp
ZXMgb24gc2lnbmFsIGhhbmRsZXIgdG9vLCB3ZSBuZWVkIHRvIHBlcmZvcm0gYm91bmQgY2hlY2tp
bmcKKyAgICAgICAgLy8gdG8gZW5zdXJlIHRoYXQgbm8gbWVtb3J5IGFjY2VzcyBleGNlZWRzIHRo
ZSBjdXJyZW50IG1lbW9yeSBzaXplLgorICAgICAgICBBU1NFUlQobV9ib3VuZHNDaGVja2luZ1Np
emVHUFIpOwogICAgICAgICBBU1NFUlQoc2l6ZU9mT3BlcmF0aW9uICsgb2Zmc2V0ID4gb2Zmc2V0
KTsKICAgICAgICAgYXV0byB0ZW1wID0gZzY0KCk7CiAgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6
OmJpZ0ltbShzdGF0aWNfY2FzdDx1aW50NjRfdD4oc2l6ZU9mT3BlcmF0aW9uKSArIG9mZnNldCAt
IDEpLCB0ZW1wKTsKICAgICAgICAgYXBwZW5kKEFkZDY0LCByZXN1bHQsIHRlbXApOwogCiAgICAg
ICAgIGVtaXRDaGVjayhbJl0gewotICAgICAgICAgICAgcmV0dXJuIEluc3QoQnJhbmNoNjQsIG51
bGxwdHIsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsKSwgdGVtcCwg
VG1wKG1fbWVtb3J5U2l6ZUdQUikpOworICAgICAgICAgICAgcmV0dXJuIEluc3QoQnJhbmNoNjQs
IG51bGxwdHIsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsKSwgdGVt
cCwgVG1wKG1fYm91bmRzQ2hlY2tpbmdTaXplR1BSKSk7CiAgICAgICAgIH0sIFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAg
ICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBlOjpPdXRP
ZkJvdW5kc01lbW9yeUFjY2Vzcyk7CiAgICAgICAgIH0pOwpAQCAtMjE1NCw3ICsyMTU5LDcgQEAg
YXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBjb25z
dCBTaWduYXR1cmUmIHNpZ25hdHVyZSwKICAgICAgICAgYXV0byogcGF0Y2hwb2ludCA9IGVtaXRD
YWxsUGF0Y2hwb2ludChtX2N1cnJlbnRCbG9jaywgc2lnbmF0dXJlLCByZXN1bHRzLCBhcmdzKTsK
ICAgICAgICAgLy8gV2UgbmVlZCB0byBjbG9iYmVyIHRoZSBzaXplIHJlZ2lzdGVyIHNpbmNlIHRo
ZSBMTEludCBhbHdheXMgYm91bmRzIGNoZWNrcwogICAgICAgICBpZiAobV9tb2RlID09IE1lbW9y
eU1vZGU6OlNpZ25hbGluZykKLSAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFJl
Z2lzdGVyU2V0IHsgUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS5zaXplUmVnaXN0ZXIgfSk7Cisg
ICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldCB7IFBpbm5lZFJl
Z2lzdGVySW5mbzo6Z2V0KCkuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgfSk7CiAgICAgICAg
IHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIGZ1bmN0
aW9uSW5kZXhdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYpIHsKICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBh
bGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0g
aml0LnRocmVhZFNhZmVQYXRjaGFibGVOZWFyQ2FsbCgpOwpAQCAtMjI3OCwxMyArMjI4MywxMyBA
QCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRl
eCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYQogICAgICAgICAgICAgaml0LnN0b3JlV2FzbUNvbnRl
eHRJbnN0YW5jZShuZXdDb250ZXh0SW5zdGFuY2UpOwogICAgICAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBzdXBwb3J0IG1vcmUgdGhhbiBvbmUgbWVtb3J5IHNpemUgcmVnaXN0ZXIKICAgICAg
ICAgICAgIC8vICAgc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYyOTUyCi0gICAgICAgICAgICBBU1NFUlQocGlubmVkUmVncy5zaXplUmVnaXN0ZXIgIT0gbmV3
Q29udGV4dEluc3RhbmNlKTsKLSAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoT3JTaXplID0gR2ln
YWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IHBhcmFtcy5ncFNjcmF0Y2go
MCkgOiBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcjsKKyAgICAgICAgICAgIEFTU0VSVChwaW5uZWRS
ZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyICE9IG5ld0NvbnRleHRJbnN0YW5jZSk7Cisg
ICAgICAgICAgICBHUFJSZWcgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplID0gR2lnYWNhZ2U6
OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBw
aW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyOwogCi0gICAgICAgICAgICBqaXQu
bG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobmV3Q29udGV4dEluc3RhbmNlLCBJbnN0YW5j
ZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlcik7
IC8vIE1lbW9yeSBzaXplLgorICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKG5ld0NvbnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRz
Q2hlY2tpbmdTaXplKCkpLCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsg
Ly8gQm91bmQgY2hlY2tpbmcgc2l6ZS4KICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hl
ZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7IC8vIE1lbW9yeTo6dm9pZCouCiAKLSAgICAgICAgICAg
IGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBw
aW5uZWRSZWdzLnNpemVSZWdpc3Rlciwgc2NyYXRjaE9yU2l6ZSk7CisgICAgICAgICAgICBqaXQu
Y2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgcGlubmVk
UmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlciwgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdT
aXplKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgZW1pdFBhdGNocG9pbnQoZG9Db250ZXh0U3dp
dGNoLCBwYXRjaHBvaW50LCBUbXAoKSwgbmV3Q29udGV4dEluc3RhbmNlLCBpbnN0YW5jZVZhbHVl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3Iu
Y3BwCmluZGV4IDMwYjNjNzcyMzJmMmRlZTVmNDU5M2E0YmM4OTk1NjU3ZjEzOThkZmIuLjk2ZjNh
YWNmOTZiNDIyMDExOGViY2ZlOGUxYzE4NWMyZDdmM2VjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTMyNSw3ICszMjUsNyBA
QCBjbGFzcyBCM0lSR2VuZXJhdG9yIHsKICAgICBJbnNlcnRpb25TZXQgbV9jb25zdGFudEluc2Vy
dGlvblZhbHVlczsKICAgICBWYWx1ZSogbV9mcmFtZVBvaW50ZXIgeyBudWxscHRyIH07CiAgICAg
R1BSUmVnIG1fbWVtb3J5QmFzZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKLSAgICBHUFJSZWcgbV9t
ZW1vcnlTaXplR1BSIHsgSW52YWxpZEdQUlJlZyB9OworICAgIEdQUlJlZyBtX2JvdW5kc0NoZWNr
aW5nU2l6ZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKICAgICBHUFJSZWcgbV93YXNtQ29udGV4dElu
c3RhbmNlR1BSIHsgSW52YWxpZEdQUlJlZyB9OwogICAgIGJvb2wgbV9tYWtlc0NhbGxzIHsgZmFs
c2UgfTsKIApAQCAtNDA4LDggKzQwOCw4IEBAIEIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3Io
Y29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFByb2NlZHVyZSYgcHJvY2VkdXJlCiAgICAg
ICAgIG1fcHJvYy5waW5SZWdpc3RlcihtX3dhc21Db250ZXh0SW5zdGFuY2VHUFIpOwogCiAgICAg
aWYgKG1vZGUgIT0gTWVtb3J5TW9kZTo6U2lnbmFsaW5nKSB7Ci0gICAgICAgIG1fbWVtb3J5U2l6
ZUdQUiA9IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyOwotICAgICAgICBtX3Byb2MucGluUmVnaXN0
ZXIobV9tZW1vcnlTaXplR1BSKTsKKyAgICAgICAgbV9ib3VuZHNDaGVja2luZ1NpemVHUFIgPSBw
aW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyOworICAgICAgICBtX3Byb2MucGlu
UmVnaXN0ZXIobV9ib3VuZHNDaGVja2luZ1NpemVHUFIpOwogICAgIH0KIAogICAgIGlmIChpbmZv
Lm1lbW9yeSkgewpAQCAtNDE3LDcgKzQxNyw3IEBAIEIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0
b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFByb2NlZHVyZSYgcHJvY2VkdXJlCiAg
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fbW9kZSkgewogICAgICAgICAgICAgY2FzZSBNZW1v
cnlNb2RlOjpCb3VuZHNDaGVja2luZzoKLSAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHBp
bm5lZEdQUiwgbV9tZW1vcnlTaXplR1BSID09IHBpbm5lZEdQUik7CisgICAgICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRChwaW5uZWRHUFIsIG1fYm91bmRzQ2hlY2tpbmdTaXplR1BSID09IHBpbm5l
ZEdQUik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIE1lbW9yeU1v
ZGU6OlNpZ25hbGluZzoKICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHBpbm5lZEdQUiwg
SW52YWxpZEdQUlJlZyA9PSBwaW5uZWRHUFIpOwpAQCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQgQjNJ
UkdlbmVyYXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoUmVzdG9yZUNhY2hlZFN0
YWNrTGltaXQgcmVzdG9yCiAgICAgICAgIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyogcGlubmVk
UmVncyA9ICZQaW5uZWRSZWdpc3RlckluZm86OmdldCgpOwogICAgICAgICBSZWdpc3RlclNldCBj
bG9iYmVyczsKICAgICAgICAgY2xvYmJlcnMuc2V0KHBpbm5lZFJlZ3MtPmJhc2VNZW1vcnlQb2lu
dGVyKTsKLSAgICAgICAgY2xvYmJlcnMuc2V0KHBpbm5lZFJlZ3MtPnNpemVSZWdpc3Rlcik7Cisg
ICAgICAgIGNsb2JiZXJzLnNldChwaW5uZWRSZWdzLT5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rl
cik7CiAgICAgICAgIGlmICghaXNBUk02NCgpKQogICAgICAgICAgICAgY2xvYmJlcnMuc2V0KFJl
Z2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAKQEAgLTU2MSwxMiArNTYxLDEy
IEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoUmVz
dG9yZUNhY2hlZFN0YWNrTGltaXQgcmVzdG9yCiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVy
YXRvcihbcGlubmVkUmVnc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgIEdQUlJlZyBiYXNl
TWVtb3J5ID0gcGlubmVkUmVncy0+YmFzZU1lbW9yeVBvaW50ZXI7Ci0gICAgICAgICAgICBHUFJS
ZWcgc2NyYXRjaE9yU2l6ZSA9IEdpZ2FjYWdlOjppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2
ZSkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogcGlubmVkUmVncy0+c2l6ZVJlZ2lzdGVyOworICAg
ICAgICAgICAgR1BSUmVnIHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSA9IEdpZ2FjYWdlOjpp
c0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogcGlu
bmVkUmVncy0+Ym91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXI7CiAKLSAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCksIEluc3RhbmNlOjpv
ZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBpbm5lZFJlZ3MtPnNpemVSZWdpc3Rlcik7Cisg
ICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFyYW1zWzBdLmdw
cigpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSksIHBpbm5l
ZFJlZ3MtPmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsKICAgICAgICAgICAgIGppdC5sb2Fk
UHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCksIEluc3RhbmNlOjpvZmZz
ZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7CiAKLSAgICAgICAgICAgIGppdC5jYWdl
Q29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdz
LT5zaXplUmVnaXN0ZXIsIHNjcmF0Y2hPclNpemUpOworICAgICAgICAgICAgaml0LmNhZ2VDb25k
aXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJlZ3MtPmJv
dW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOwog
ICAgICAgICB9KTsKICAgICB9CiB9CkBAIC03OTMsNyArNzkzLDkgQEAgYXV0byBCM0lSR2VuZXJh
dG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBlIGRlbHRhLCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KQogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KEV4cHJlc3Npb25U
eXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihkZWNsdHlwZShzdGF0aWNfY2FzdDxNZW1vcnkqPihudWxscHRyKS0+c2l6ZSgpKSkgPT0gc2l6
ZW9mKHVpbnQ2NF90KSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOwotICAgIFZhbHVl
KiBzaXplID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBM
b2FkLCBJbnQ2NCwgb3JpZ2luKCksIGluc3RhbmNlVmFsdWUoKSwgc2FmZUNhc3Q8aW50MzJfdD4o
SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSk7CisgICAgVmFsdWUqIG1lbW9y
eSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwg
SW50NjQsIG9yaWdpbigpLCBpbnN0YW5jZVZhbHVlKCksIHNhZmVDYXN0PGludDMyX3Q+KEluc3Rh
bmNlOjpvZmZzZXRPZk1lbW9yeSgpKSk7CisgICAgVmFsdWUqIGhhbmRsZSA9IG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50NjQsIG9yaWdpbigp
LCBtZW1vcnksIHNhZmVDYXN0PGludDMyX3Q+KE1lbW9yeTo6b2Zmc2V0T2ZIYW5kbGUoKSkpOwor
ICAgIFZhbHVlKiBzaXplID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
bV9wcm9jLCBMb2FkLCBJbnQ2NCwgb3JpZ2luKCksIGhhbmRsZSwgc2FmZUNhc3Q8aW50MzJfdD4o
TWVtb3J5SGFuZGxlOjpvZmZzZXRPZlNpemUoKSkpOwogCiAgICAgY29uc3RleHByIHVpbnQzMl90
IHNoaWZ0VmFsdWUgPSAxNjsKICAgICBzdGF0aWNfYXNzZXJ0KFBhZ2VDb3VudDo6cGFnZVNpemUg
PT0gMXVsbCA8PCBzaGlmdFZhbHVlLCAiVGhpcyBtdXN0IGhvbGQgZm9yIHRoZSBjb2RlIGJlbG93
IHRvIGJlIGNvcnJlY3QuIik7CkBAIC05NTQsOSArOTU2LDkgQEAgaW5saW5lIFZhbHVlKiBCM0lS
R2VuZXJhdG9yOjplbWl0Q2hlY2tBbmRQcmVwYXJlUG9pbnRlcihFeHByZXNzaW9uVHlwZSBwb2lu
dGVyLAogICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgY2FzZSBNZW1vcnlNb2RlOjpCb3VuZHND
aGVja2luZzogewogICAgICAgICAvLyBXZSdyZSBub3QgdXNpbmcgc2lnbmFsIGhhbmRsaW5nIGF0
IGFsbCwgd2UgbXVzdCB0aGVyZWZvcmUgY2hlY2sgdGhhdCBubyBtZW1vcnkgYWNjZXNzIGV4Y2Vl
ZHMgdGhlIGN1cnJlbnQgbWVtb3J5IHNpemUuCi0gICAgICAgIEFTU0VSVChtX21lbW9yeVNpemVH
UFIpOworICAgICAgICBBU1NFUlQobV9ib3VuZHNDaGVja2luZ1NpemVHUFIpOwogICAgICAgICBB
U1NFUlQoc2l6ZU9mT3BlcmF0aW9uICsgb2Zmc2V0ID4gb2Zmc2V0KTsKLSAgICAgICAgbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxXYXNtQm91bmRzQ2hlY2tWYWx1ZT4obV9wcm9jLCBvcmlnaW4o
KSwgbV9tZW1vcnlTaXplR1BSLCBwb2ludGVyLCBzaXplT2ZPcGVyYXRpb24gKyBvZmZzZXQgLSAx
KTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxXYXNtQm91bmRzQ2hlY2tWYWx1
ZT4obV9wcm9jLCBvcmlnaW4oKSwgbV9ib3VuZHNDaGVja2luZ1NpemVHUFIsIHBvaW50ZXIsIHNp
emVPZk9wZXJhdGlvbiArIG9mZnNldCAtIDEpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAg
LTE3MTAsNyArMTcxMiw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBm
dW5jdGlvbkluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwKIAogICAgICAgICAgICAg
ICAgIC8vIFdlIG5lZWQgdG8gY2xvYmJlciB0aGUgc2l6ZSByZWdpc3RlciBzaW5jZSB0aGUgTExJ
bnQgYWx3YXlzIGJvdW5kcyBjaGVja3MKICAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IE1l
bW9yeU1vZGU6OlNpZ25hbGluZykKLSAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xv
YmJlckxhdGUoUmVnaXN0ZXJTZXQgeyBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnNpemVSZWdp
c3RlciB9KTsKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUmVn
aXN0ZXJTZXQgeyBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLmJvdW5kc0NoZWNraW5nU2l6ZVJl
Z2lzdGVyIH0pOwogICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbdW5s
aW5rZWRXYXNtVG9XYXNtQ2FsbHMsIGZ1bmN0aW9uSW5kZXhdIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgICAgICAg
ICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC50aHJlYWRTYWZl
UGF0Y2hhYmxlTmVhckNhbGwoKTsKQEAgLTE4MzEsMTYgKzE4MzMsMTYgQEAgYXV0byBCM0lSR2Vu
ZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0
dXJlJiBzaWduYXQKICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVz
cyhvbGRDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZFN0YWNrTGltaXQo
KSksIGJhc2VNZW1vcnkpOwogICAgICAgICAgICAgaml0LnN0b3JlUHRyKGJhc2VNZW1vcnksIEND
YWxsSGVscGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRP
ZkNhY2hlZFN0YWNrTGltaXQoKSkpOwogICAgICAgICAgICAgaml0LnN0b3JlV2FzbUNvbnRleHRJ
bnN0YW5jZShuZXdDb250ZXh0SW5zdGFuY2UpOwotICAgICAgICAgICAgQVNTRVJUKHBpbm5lZFJl
Z3Muc2l6ZVJlZ2lzdGVyICE9IGJhc2VNZW1vcnkpOworICAgICAgICAgICAgQVNTRVJUKHBpbm5l
ZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgIT0gYmFzZU1lbW9yeSk7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBtZW1vcnkgc2l6
ZSByZWdpc3RlcgogICAgICAgICAgICAgLy8gICBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKLSAgICAgICAgICAgIEFTU0VSVChwaW5uZWRSZWdzLnNp
emVSZWdpc3RlciAhPSBuZXdDb250ZXh0SW5zdGFuY2UpOwotICAgICAgICAgICAgR1BSUmVnIHNj
cmF0Y2hPclNpemUgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUpID8g
cGFyYW1zLmdwU2NyYXRjaCgwKSA6IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyOworICAgICAgICAg
ICAgQVNTRVJUKHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgIT0gbmV3Q29u
dGV4dEluc3RhbmNlKTsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoT3JCb3VuZHNDaGVja2lu
Z1NpemUgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUpID8gcGFyYW1z
LmdwU2NyYXRjaCgwKSA6IHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXI7CiAK
LSAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhuZXdDb250ZXh0
SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBpbm5lZFJl
Z3Muc2l6ZVJlZ2lzdGVyKTsgLy8gTWVtb3J5IHNpemUuCisgICAgICAgICAgICBqaXQubG9hZFB0
cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobmV3Q29udGV4dEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zm
c2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSksIHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tp
bmdTaXplUmVnaXN0ZXIpOyAvLyBNZW1vcnkgc2l6ZS4KICAgICAgICAgICAgIGppdC5sb2FkUHRy
KENDYWxsSGVscGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZz
ZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7IC8vIE1lbW9yeTo6dm9pZCouCiAKLSAg
ICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNl
TWVtb3J5LCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlciwgc2NyYXRjaE9yU2l6ZSk7CisgICAgICAg
ICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9y
eSwgcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlciwgc2NyYXRjaE9yQm91bmRz
Q2hlY2tpbmdTaXplKTsKICAgICAgICAgfSk7CiAgICAgICAgIGRvQ29udGV4dFN3aXRjaC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywgSnVtcCwgb3JpZ2luKCksIGNvbnRpbnVhdGlvbik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAppbmRleCA5NDFk
MDE2MzdjY2M5MDI3YmIzMDk0ZjlmMmNjY2IyZTZjZDMxYTkyLi42NTc1OWE3Y2MwOTU0ZDZhYjc1
OWViNGE4YThjMTUxOTRjYjljYWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQmluZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUJpbmRpbmcuY3BwCkBAIC00OSw5ICs0OSw5IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvV2FzbSh1bnNpCiAg
ICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVyOwogICAg
IEFTU0VSVChiYXNlTWVtb3J5ICE9IEdQUlJlZzo6SW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJU
KGJhc2VNZW1vcnkgIT0gc2NyYXRjaCk7Ci0gICAgQVNTRVJUKHBpbm5lZFJlZ3Muc2l6ZVJlZ2lz
dGVyICE9IGJhc2VNZW1vcnkpOwotICAgIEFTU0VSVChwaW5uZWRSZWdzLnNpemVSZWdpc3RlciAh
PSBzY3JhdGNoKTsKLSAgICBHUFJSZWcgc2l6ZVJlZ0FzU2NyYXRjaCA9IHBpbm5lZFJlZ3Muc2l6
ZVJlZ2lzdGVyOworICAgIEFTU0VSVChwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lz
dGVyICE9IGJhc2VNZW1vcnkpOworICAgIEFTU0VSVChwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5n
U2l6ZVJlZ2lzdGVyICE9IHNjcmF0Y2gpOworICAgIEdQUlJlZyBzaXplUmVnQXNTY3JhdGNoID0g
cGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlcjsKICAgICBBU1NFUlQoc2l6ZVJl
Z0FzU2NyYXRjaCAhPSBHUFJSZWc6OkludmFsaWRHUFJSZWcpOwogCiAgICAgLy8gQjMncyBjYWxs
IGNvZGVnZW4gZW5zdXJlcyB0aGF0IHRoZSBKU0NlbGwgaXMgYSBXZWJBc3NlbWJseUZ1bmN0aW9u
LgpAQCAtNjgsMTEgKzY4LDExIEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNt
RW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvV2FzbSh1bnNpCiAgICAgLy8gRklY
TUUgdGhlIGZvbGxvd2luZyBjb2RlIGFzc3VtZXMgdGhhdCBhbGwgV2FzbTo6SW5zdGFuY2UgaGF2
ZSB0aGUgc2FtZSBwaW5uZWQgcmVnaXN0ZXJzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYyOTUyCiAgICAgLy8gU2V0IHVwIHRoZSBjYWxsZWUncyBiYXNlTWVtb3J5
IHJlZ2lzdGVyIGFzIHdlbGwgYXMgdGhlIG1lbW9yeSBzaXplIHJlZ2lzdGVycy4KICAgICB7Ci0g
ICAgICAgIEdQUlJlZyBzY3JhdGNoT3JTaXplID0gIUdpZ2FjYWdlOjppc0VuYWJsZWQoR2lnYWNh
Z2U6OlByaW1pdGl2ZSkgPyBwaW5uZWRSZWdzLnNpemVSZWdpc3RlciA6IHdhc21DYWxsaW5nQ29u
dmVudGlvbigpLnByb2xvZ3VlU2NyYXRjaEdQUnNbMV07CisgICAgICAgIEdQUlJlZyBzY3JhdGNo
T3JCb3VuZHNDaGVja2luZ1NpemUgPSAhR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJp
bWl0aXZlKSA/IHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgOiB3YXNtQ2Fs
bGluZ0NvbnZlbnRpb24oKS5wcm9sb2d1ZVNjcmF0Y2hHUFJzWzFdOwogCi0gICAgICAgIGppdC5s
b2FkUHRyKEpJVDo6QWRkcmVzcyhiYXNlTWVtb3J5LCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZD
YWNoZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlcik7IC8vIE1lbW9yeSBz
aXplLgorICAgICAgICBqaXQubG9hZFB0cihKSVQ6OkFkZHJlc3MoYmFzZU1lbW9yeSwgV2FzbTo6
SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkpLCBwaW5uZWRSZWdz
LmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsgLy8gQm91bmQgY2hlY2tpbmcgc2l6ZS4KICAg
ICAgICAgaml0LmxvYWRQdHIoSklUOjpBZGRyZXNzKGJhc2VNZW1vcnksIFdhc206Okluc3RhbmNl
OjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7IC8vIFdhc206Ok1lbW9yeTo6
VGFnZ2VkQXJyYXlTdG9yYWdlUHRyPHZvaWQ+ICh2b2lkKikuCi0gICAgICAgIGppdC5jYWdlQ29u
ZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLnNp
emVSZWdpc3Rlciwgc2NyYXRjaE9yU2l6ZSk7CisgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxs
eShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNr
aW5nU2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOwogICAgIH0KIAog
ICAgIC8vIFRhaWwgY2FsbCBpbnRvIHRoZSBjYWxsZWUgV2ViQXNzZW1ibHkgZnVuY3Rpb24uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5k
bGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRs
ZXIuY3BwCmluZGV4IDNlYTAwODg5MDFiNmMyN2NmNjViMGI0NzRkZDhkYzk1Yzc4MTUxZmYuLjA0
YzM0YjdlOGFlNmQ3ZGU2YWE5YWY0MDkzNmE4YzNlMmE1NzRjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCkBAIC02
MywyOSArNjMsNDAgQEAgc3RhdGljIFNpZ25hbEFjdGlvbiB0cmFwSGFuZGxlcihTaWduYWwsIFNp
Z0luZm8mIHNpZ0luZm8sIFBsYXRmb3JtUmVnaXN0ZXJzJiBjb24KICAgICBkYXRhTG9nTG5JZihX
YXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJzdGFydGluZyBoYW5kbGVy
IGZvciBmYXVsdCBhdDogIiwgUmF3UG9pbnRlcihmYXVsdGluZ0luc3RydWN0aW9uKSk7CiAKICAg
ICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJK
SVQgbWVtb3J5IHN0YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0T2ZGaXhlZEV4ZWN1dGFibGVNZW1v
cnlQb29sKCkpLCAiIGVuZDogIiwgUmF3UG9pbnRlcihlbmRPZkZpeGVkRXhlY3V0YWJsZU1lbW9y
eVBvb2woKSkpOwotICAgIC8vIEZpcnN0IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGFyZSBpbiBK
SVQgY29kZSBiZWZvcmUgd2UgY2FuIGFxdWlyZSBhbnkgbG9ja3MuIE90aGVyd2lzZSwKKyAgICBk
YXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJXYXNt
TExJbnQgbWVtb3J5IHN0YXJ0OiAiLCBSYXdQb2ludGVyKHVudGFnQ29kZVB0cjx2b2lkKiwgQ0Z1
bmN0aW9uUHRyVGFnPihMTEludDo6d2FzbUxMSW50UENSYW5nZVN0YXJ0KSksICIgZW5kOiAiLCBS
YXdQb2ludGVyKHVudGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnPihMTEludDo6d2Fz
bUxMSW50UENSYW5nZUVuZCkpKTsKKyAgICAvLyBGaXJzdCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3
ZSBhcmUgaW4gSklUIGNvZGUgb3IgV2FzbSBMTEludCBjb2RlIGJlZm9yZSB3ZSBjYW4gYXF1aXJl
IGFueSBsb2Nrcy4gT3RoZXJ3aXNlLAogICAgIC8vIHdlIG1pZ2h0IGhhdmUgY3Jhc2hlZCBpbiBj
b2RlIHRoYXQgaXMgYWxyZWFkeSBob2xkaW5nIG9uZSBvZiB0aGUgbG9ja3Mgd2Ugd2FudCB0byBh
cXVpcmUuCiAgICAgYXNzZXJ0SXNOb3RUYWdnZWQoZmF1bHRpbmdJbnN0cnVjdGlvbik7Ci0gICAg
aWYgKGlzSklUUEMoZmF1bHRpbmdJbnN0cnVjdGlvbikpIHsKLSAgICAgICAgYm9vbCBmYXVsdGVk
SW5BY3RpdmVGYXN0TWVtb3J5ID0gZmFsc2U7CisgICAgaWYgKGlzSklUUEMoZmF1bHRpbmdJbnN0
cnVjdGlvbikgfHwgTExJbnQ6OmlzV2FzbUxMSW50UEMoZmF1bHRpbmdJbnN0cnVjdGlvbikpIHsK
KyAgICAgICAgYm9vbCBmYXVsdGVkSW5BY3RpdmVHcm93YWJsZU1lbW9yeSA9IGZhbHNlOwogICAg
ICAgICB7CiAgICAgICAgICAgICB2b2lkKiBmYXVsdGluZ0FkZHJlc3MgPSBzaWdJbmZvLmZhdWx0
aW5nQWRkcmVzczsKICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRs
ZXJJbnRlcm5hbDo6dmVyYm9zZSwgImNoZWNraW5nIGZhdWx0aW5nIGFkZHJlc3M6ICIsIFJhd1Bv
aW50ZXIoZmF1bHRpbmdBZGRyZXNzKSwgIiBpcyBpbiBhbiBhY3RpdmUgZmFzdCBtZW1vcnkiKTsK
LSAgICAgICAgICAgIGZhdWx0ZWRJbkFjdGl2ZUZhc3RNZW1vcnkgPSBXYXNtOjpNZW1vcnk6OmFk
ZHJlc3NJc0luQWN0aXZlRmFzdE1lbW9yeShmYXVsdGluZ0FkZHJlc3MpOworICAgICAgICAgICAg
ZmF1bHRlZEluQWN0aXZlR3Jvd2FibGVNZW1vcnkgPSBXYXNtOjpNZW1vcnk6OmFkZHJlc3NJc0lu
QWN0aXZlR3Jvd2FibGVNZW1vcnkoZmF1bHRpbmdBZGRyZXNzKTsKICAgICAgICAgfQotICAgICAg
ICBpZiAoZmF1bHRlZEluQWN0aXZlRmFzdE1lbW9yeSkgeworICAgICAgICBpZiAoZmF1bHRlZElu
QWN0aXZlR3Jvd2FibGVNZW1vcnkpIHsKICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVs
dFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZvdW5kIGFjdGl2ZSBmYXN0IG1lbW9y
eSBmb3IgZmF1bHRpbmcgYWRkcmVzcyIpOwotICAgICAgICAgICAgYXV0byYgY2FsbGVlUmVnaXN0
cnkgPSBDYWxsZWVSZWdpc3RyeTo6c2luZ2xldG9uKCk7Ci0gICAgICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKGNhbGxlZVJlZ2lzdHJ5LmdldExvY2soKSk7Ci0gICAgICAgICAgICBmb3Ig
KGF1dG8qIGNhbGxlZSA6IGNhbGxlZVJlZ2lzdHJ5LmFsbENhbGxlZXMobG9ja2VyKSkgewotICAg
ICAgICAgICAgICAgIGF1dG8gW3N0YXJ0LCBlbmRdID0gY2FsbGVlLT5yYW5nZSgpOwotICAgICAg
ICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVy
Ym9zZSwgImZ1bmN0aW9uIHN0YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0KSwgIiBlbmQ6ICIsIFJh
d1BvaW50ZXIoZW5kKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXJ0IDw9IGZhdWx0aW5nSW5z
dHJ1Y3Rpb24gJiYgZmF1bHRpbmdJbnN0cnVjdGlvbiA8IGVuZCkgewotICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2Us
ICJmb3VuZCBtYXRjaCIpOwotICAgICAgICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6YXJn
dW1lbnRQb2ludGVyPDE+KGNvbnRleHQpID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGlj
X2Nhc3Q8dWludHB0cl90PihXYXNtOjpDb250ZXh0Ojp1c2VGYXN0VExTKCkpKTsKLSAgICAgICAg
ICAgICAgICAgICAgTWFjaGluZUNvbnRleHQ6OnNldEluc3RydWN0aW9uUG9pbnRlcihjb250ZXh0
LCBMTEludDo6Z2V0Q29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+KHdhc21fdGhyb3dfZnJvbV9mYXVs
dF9oYW5kbGVyX3RyYW1wb2xpbmUpKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNpZ25h
bEFjdGlvbjo6SGFuZGxlZDsKKworICAgICAgICAgICAgYXV0byBkb2VzRmF1bHRJbldhc20gPSBb
XSh2b2lkKiBmYXVsdGluZ0luc3RydWN0aW9uKSB7CisgICAgICAgICAgICAgICAgaWYgKExMSW50
Ojppc1dhc21MTEludFBDKGZhdWx0aW5nSW5zdHJ1Y3Rpb24pKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBhdXRvJiBjYWxsZWVSZWdpc3RyeSA9IENh
bGxlZVJlZ2lzdHJ5OjpzaW5nbGV0b24oKTsKKyAgICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKGNhbGxlZVJlZ2lzdHJ5LmdldExvY2soKSk7CisgICAgICAgICAgICAgICAgZm9y
IChhdXRvKiBjYWxsZWUgOiBjYWxsZWVSZWdpc3RyeS5hbGxDYWxsZWVzKGxvY2tlcikpIHsKKyAg
ICAgICAgICAgICAgICAgICAgYXV0byBbc3RhcnQsIGVuZF0gPSBjYWxsZWUtPnJhbmdlKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRl
cm5hbDo6dmVyYm9zZSwgImZ1bmN0aW9uIHN0YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0KSwgIiBl
bmQ6ICIsIFJhd1BvaW50ZXIoZW5kKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydCA8
PSBmYXVsdGluZ0luc3RydWN0aW9uICYmIGZhdWx0aW5nSW5zdHJ1Y3Rpb24gPCBlbmQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJ
bnRlcm5hbDo6dmVyYm9zZSwgImZvdW5kIG1hdGNoIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9OworCisgICAgICAg
ICAgICBpZiAoZG9lc0ZhdWx0SW5XYXNtKGZhdWx0aW5nSW5zdHJ1Y3Rpb24pKSB7CisgICAgICAg
ICAgICAgICAgTWFjaGluZUNvbnRleHQ6OmFyZ3VtZW50UG9pbnRlcjwxPihjb250ZXh0KSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oV2FzbTo6Q29udGV4
dDo6dXNlRmFzdFRMUygpKSk7CisgICAgICAgICAgICAgICAgTWFjaGluZUNvbnRleHQ6OnNldElu
c3RydWN0aW9uUG9pbnRlcihjb250ZXh0LCBMTEludDo6Z2V0Q29kZVB0cjxDRnVuY3Rpb25QdHJU
YWc+KHdhc21fdGhyb3dfZnJvbV9mYXVsdF9oYW5kbGVyX3RyYW1wb2xpbmUpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gU2lnbmFsQWN0aW9uOjpIYW5kbGVkOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQpAQCAtMTA3LDcgKzExOCw3IEBAIHZvaWQgZW5hYmxlRmFzdE1lbW9yeSgp
CiAgICAgICAgIGlmICghV2FzbTo6aXNTdXBwb3J0ZWQoKSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpKQorICAg
ICAgICBpZiAoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpICYmICFPcHRpb25z
Ojp1c2VTaGFyZWRBcnJheUJ1ZmZlcigpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IGFjdGl2YXRlU2lnbmFsSGFuZGxlcnNGb3IoU2lnbmFsOjpBY2Nlc3NGYXVsdCk7CkBAIC0xMjUs
NyArMTM2LDcgQEAgdm9pZCBwcmVwYXJlRmFzdE1lbW9yeSgpCiAgICAgICAgIGlmICghV2FzbTo6
aXNTdXBwb3J0ZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIU9wdGlv
bnM6OnVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpKQorICAgICAgICBpZiAoIU9wdGlvbnM6OnVz
ZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpICYmICFPcHRpb25zOjp1c2VTaGFyZWRBcnJheUJ1ZmZl
cigpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGFkZFNpZ25hbEhhbmRsZXIoU2ln
bmFsOjpBY2Nlc3NGYXVsdCwgW10gKFNpZ25hbCBzaWduYWwsIFNpZ0luZm8mIHNpZ0luZm8sIFBs
YXRmb3JtUmVnaXN0ZXJzJiB1Y29udGV4dCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtSW5zdGFuY2UuaAppbmRleCA2MGU1NjE5MDJkNGMxOGY4MWVlMmYzN2NjNWJlN2Q2NTQ2Njdk
ZWVmLi45YTk4NTJjMjQyMjA4MjdiN2VhMGVlNzRkZWZhNDM0NWM4ODEwZWViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaApAQCAtNzcsOCArNzcsOCBAQCBjbGFz
cyBJbnN0YW5jZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbnN0YW5jZT4sIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxJbgogICAgIFRhYmxlKiB0YWJsZSh1bnNpZ25lZCk7CiAgICAgdm9p
ZCBzZXRUYWJsZSh1bnNpZ25lZCwgUmVmPFRhYmxlPiYmKTsKIAotICAgIHZvaWQqIGNhY2hlZE1l
bW9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkTWVtb3J5LmdldE1heUJlTnVsbChjYWNoZWRN
ZW1vcnlTaXplKCkpOyB9Ci0gICAgc2l6ZV90IGNhY2hlZE1lbW9yeVNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2NhY2hlZE1lbW9yeVNpemU7IH0KKyAgICB2b2lkKiBjYWNoZWRNZW1vcnkoKSBjb25z
dCB7IHJldHVybiBtX2NhY2hlZE1lbW9yeS5nZXRNYXlCZU51bGwoY2FjaGVkQm91bmRzQ2hlY2tp
bmdTaXplKCkpOyB9CisgICAgc2l6ZV90IGNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplOyB9CiAKICAgICB2b2lkIHNldE1l
bW9yeShSZWY8TWVtb3J5PiYmIG1lbW9yeSkKICAgICB7CkBAIC04OSw4ICs4OSw4IEBAIGNsYXNz
IEluc3RhbmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPEluCiAgICAgdm9pZCB1cGRhdGVDYWNoZWRNZW1vcnkoKQogICAgIHsK
ICAgICAgICAgaWYgKG1fbWVtb3J5ICE9IG51bGxwdHIpIHsKLSAgICAgICAgICAgIG1fY2FjaGVk
TWVtb3J5ID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+
KG1lbW9yeSgpLT5tZW1vcnkoKSwgbWVtb3J5KCktPnNpemUoKSk7Ci0gICAgICAgICAgICBtX2Nh
Y2hlZE1lbW9yeVNpemUgPSBtZW1vcnkoKS0+c2l6ZSgpOworICAgICAgICAgICAgbV9jYWNoZWRN
ZW1vcnkgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj4o
bWVtb3J5KCktPm1lbW9yeSgpLCBtZW1vcnkoKS0+Ym91bmRzQ2hlY2tpbmdTaXplKCkpOworICAg
ICAgICAgICAgbV9jYWNoZWRCb3VuZHNDaGVja2luZ1NpemUgPSBtZW1vcnkoKS0+Ym91bmRzQ2hl
Y2tpbmdTaXplKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCBjbGFz
cyBJbnN0YW5jZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbnN0YW5jZT4sIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxJbgogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNZW1vcnko
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fbWVtb3J5KTsgfQogICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZHbG9iYWxzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEluc3RhbmNlLCBtX2dsb2JhbHMpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNh
Y2hlZE1lbW9yeSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5jZSwgbV9jYWNoZWRN
ZW1vcnkpOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fY2FjaGVkTWVtb3J5U2l6ZSk7
IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXpl
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX2NhY2hlZEJvdW5kc0NoZWNr
aW5nU2l6ZSk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUG9pbnRlclRvVG9wRW50
cnlGcmFtZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5jZSwgbV9wb2ludGVyVG9U
b3BFbnRyeUZyYW1lKTsgfQogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlBvaW50ZXJU
b0FjdHVhbFN0YWNrTGltaXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1f
cG9pbnRlclRvQWN0dWFsU3RhY2tMaW1pdCk7IH0KQEAgLTIwMSw3ICsyMDEsNyBAQCBjbGFzcyBJ
bnN0YW5jZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbnN0YW5jZT4sIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxJbgogICAgIHZvaWQqIG1fb3duZXIgeyBudWxscHRyIH07IC8vIEluIGEg
SlMgZW1iZWRkaW5nLCB0aGlzIGlzIGEgSlNXZWJBc3NlbWJseUluc3RhbmNlKi4KICAgICBDb250
ZXh0KiBtX2NvbnRleHQgeyBudWxscHRyIH07CiAgICAgQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1p
dGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+IG1fY2FjaGVkTWVtb3J5OwotICAgIHNpemVfdCBtX2Nh
Y2hlZE1lbW9yeVNpemUgeyAwIH07CisgICAgc2l6ZV90IG1fY2FjaGVkQm91bmRzQ2hlY2tpbmdT
aXplIHsgMCB9OwogICAgIFJlZjxNb2R1bGU+IG1fbW9kdWxlOwogICAgIFJlZlB0cjxDb2RlQmxv
Y2s+IG1fY29kZUJsb2NrOwogICAgIFJlZlB0cjxNZW1vcnk+IG1fbWVtb3J5OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcAppbmRleCBhMjZlODFkNzEyNGYzMGFlMTNk
ODJiNzRjYjFkNDMwNmEzNGUyNWIyLi4zMDA0MjQ2ZTU5YWY3YmY2NTY3MThjMTAzNDE4YTViYmU1
OTIzNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcApAQCAt
MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi9Q
cmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+CisjaW5jbHVkZSA8d3RmL1N0
ZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2luY2x1ZGUgPGNzdHJpbmc+CkBA
IC0xMzMsMTYgKzEzNCw1NSBAQCBjbGFzcyBNZW1vcnlNYW5hZ2VyIHsKICAgICAgICAgCiAgICAg
ICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmxvZ1dlYkFzc2VtYmx5TWVtb3J5KCksICJGcmVlZCB2
aXJ0dWFsOyBzdGF0ZTogIiwgKnRoaXMpOwogICAgIH0KLSAgICAKLSAgICBib29sIGlzQWRkcmVz
c0luRmFzdE1lbW9yeSh2b2lkKiBhZGRyZXNzKQorCisgICAgTWVtb3J5UmVzdWx0IHRyeUFsbG9j
YXRlR3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9yeShzaXplX3QgbWFwcGVkQ2FwYWNpdHkpCisg
ICAgeworICAgICAgICBNZW1vcnlSZXN1bHQgcmVzdWx0ID0gWyZdIHsKKyAgICAgICAgICAgIGF1
dG8gaG9sZGVyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgICAgIHZvaWQqIHJlc3VsdCA9
IEdpZ2FjYWdlOjp0cnlBbGxvY2F0ZVplcm9lZFZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6UHJpbWl0
aXZlLCBtYXBwZWRDYXBhY2l0eSk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gTWVtb3J5UmVzdWx0KG51bGxwdHIsIE1lbW9yeVJlc3VsdDo6U3luY1Ry
eVRvUmVjbGFpbU1lbW9yeSk7CisKKyAgICAgICAgICAgIG1fZ3Jvd2FibGVCb3VuZHNDaGVja2lu
Z01lbW9yaWVzLmluc2VydChzdGQ6Om1ha2VfcGFpcihiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihy
ZXN1bHQpLCBtYXBwZWRDYXBhY2l0eSkpOworCisgICAgICAgICAgICByZXR1cm4gTWVtb3J5UmVz
dWx0KHJlc3VsdCwgTWVtb3J5UmVzdWx0OjpTdWNjZXNzKTsKKyAgICAgICAgfSgpOworCisgICAg
ICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmxvZ1dlYkFzc2VtYmx5TWVtb3J5KCksICJBbGxvY2F0
ZWQgdmlydHVhbDogIiwgcmVzdWx0LCAiOyBzdGF0ZTogIiwgKnRoaXMpOworCisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdm9pZCBmcmVlR3Jvd2FibGVCb3VuZHNDaGVja2lu
Z01lbW9yeSh2b2lkKiBiYXNlUHRyLCBzaXplX3QgbWFwcGVkQ2FwYWNpdHkpCisgICAgeworICAg
ICAgICB7CisgICAgICAgICAgICBhdXRvIGhvbGRlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAg
ICAgICAgICBHaWdhY2FnZTo6ZnJlZVZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBi
YXNlUHRyLCBtYXBwZWRDYXBhY2l0eSk7CisgICAgICAgICAgICBtX2dyb3dhYmxlQm91bmRzQ2hl
Y2tpbmdNZW1vcmllcy5lcmFzZShzdGQ6Om1ha2VfcGFpcihiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PihiYXNlUHRyKSwgbWFwcGVkQ2FwYWNpdHkpKTsKKyAgICAgICAgfQorCisgICAgICAgIGRhdGFM
b2dMbklmKE9wdGlvbnM6OmxvZ1dlYkFzc2VtYmx5TWVtb3J5KCksICJGcmVlZCB2aXJ0dWFsOyBz
dGF0ZTogIiwgKnRoaXMpOworICAgIH0KKworICAgIGJvb2wgaXNBZGRyZXNzSW5Hcm93YWJsZU1l
bW9yeSh2b2lkKiBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgLy8gTk9URTogVGhpcyBjYW4gYmUg
Y2FsbGVkIGZyb20gYSBzaWduYWwgaGFuZGxlciwgYnV0IG9ubHkgYWZ0ZXIgd2UgcHJvdmVkIHRo
YXQgd2UncmUgaW4gSklUIGNvZGUuCisgICAgICAgIC8vIE5PVEU6IFRoaXMgY2FuIGJlIGNhbGxl
ZCBmcm9tIGEgc2lnbmFsIGhhbmRsZXIsIGJ1dCBvbmx5IGFmdGVyIHdlIHByb3ZlZCB0aGF0IHdl
J3JlIGluIEpJVCBjb2RlIG9yIFdhc21MTEludCBjb2RlLgogICAgICAgICBhdXRvIGhvbGRlciA9
IGhvbGRMb2NrKG1fbG9jayk7CiAgICAgICAgIGZvciAodm9pZCogbWVtb3J5IDogbV9mYXN0TWVt
b3JpZXMpIHsKICAgICAgICAgICAgIGNoYXIqIHN0YXJ0ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KG1l
bW9yeSk7CiAgICAgICAgICAgICBpZiAoc3RhcnQgPD0gYWRkcmVzcyAmJiBhZGRyZXNzIDw9IHN0
YXJ0ICsgTWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQorICAgICAgICB1aW50cHRyX3QgYWRkcmVzc1ZhbHVlID0gYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4oYWRkcmVzcyk7CisgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBzdGQ6
OnVwcGVyX2JvdW5kKG1fZ3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9yaWVzLmJlZ2luKCksIG1f
Z3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9yaWVzLmVuZCgpLCBzdGQ6Om1ha2VfcGFpcihhZGRy
ZXNzVmFsdWUsIDApLAorICAgICAgICAgICAgW10oc3RkOjpwYWlyPHVpbnRwdHJfdCwgc2l6ZV90
PiBhLCBzdGQ6OnBhaXI8dWludHB0cl90LCBzaXplX3Q+IGIpIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gKGEuZmlyc3QgKyBhLnNlY29uZCkgPCAoYi5maXJzdCArIGIuc2Vjb25kKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbV9ncm93YWJsZUJvdW5kc0NoZWNr
aW5nTWVtb3JpZXMuZW5kKCkpIHsKKyAgICAgICAgICAgIC8vIFNpbmNlIHdlIG5ldmVyIGhhdmUg
b3ZlcmxhcHBlZCByYW5nZSBpbiBtX2dyb3dhYmxlQm91bmRzQ2hlY2tpbmdNZW1vcmllcywganVz
dCBjaGVja2luZyBvbmUgbG93ZXItYm91bmQgcmFuZ2UgaXMgZW5vdWdoLgorICAgICAgICAgICAg
aWYgKGl0ZXJhdG9yLT5maXJzdCA8PSBhZGRyZXNzVmFsdWUgJiYgYWRkcmVzc1ZhbHVlIDwgKGl0
ZXJhdG9yLT5maXJzdCArIGl0ZXJhdG9yLT5zZWNvbmQpKQorICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE5
Miw2ICsyMzIsNyBAQCBjbGFzcyBNZW1vcnlNYW5hZ2VyIHsKICAgICBMb2NrIG1fbG9jazsKICAg
ICB1bnNpZ25lZCBtX21heEZhc3RNZW1vcnlDb3VudCB7IDAgfTsKICAgICBWZWN0b3I8dm9pZCo+
IG1fZmFzdE1lbW9yaWVzOworICAgIFN0ZFNldDxzdGQ6OnBhaXI8dWludHB0cl90LCBzaXplX3Q+
PiBtX2dyb3dhYmxlQm91bmRzQ2hlY2tpbmdNZW1vcmllczsKICAgICBzaXplX3QgbV9waHlzaWNh
bEJ5dGVzIHsgMCB9OwogfTsKIApAQCAtMjM1LDMwICsyNzYsNjkgQEAgYm9vbCB0cnlBbGxvY2F0
ZShjb25zdCBGdW5jJiBhbGxvY2F0ZSwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKE1lbW9yeTo6
Tm90aWZ5UHIKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKKworTWVtb3J5SGFuZGxlOjpN
ZW1vcnlIYW5kbGUodm9pZCogbWVtb3J5LCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG1hcHBlZENhcGFj
aXR5LCBQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIE1lbW9yeVNoYXJpbmdN
b2RlIHNoYXJpbmdNb2RlLCBNZW1vcnlNb2RlIG1vZGUpCisgICAgOiBtX21lbW9yeShtZW1vcnks
IG1hcHBlZENhcGFjaXR5KQorICAgICwgbV9zaXplKHNpemUpCisgICAgLCBtX21hcHBlZENhcGFj
aXR5KG1hcHBlZENhcGFjaXR5KQorICAgICwgbV9pbml0aWFsKGluaXRpYWwpCisgICAgLCBtX21h
eGltdW0obWF4aW11bSkKKyAgICAsIG1fc2hhcmluZ01vZGUoc2hhcmluZ01vZGUpCisgICAgLCBt
X21vZGUobW9kZSkKK3sKK30KKworTWVtb3J5SGFuZGxlOjp+TWVtb3J5SGFuZGxlKCkKK3sKKyAg
ICBpZiAobV9tZW1vcnkpIHsKKyAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVQaHlzaWNhbEJ5
dGVzKG1fc2l6ZSk7CisgICAgICAgIHN3aXRjaCAobV9tb2RlKSB7CisgICAgICAgIGNhc2UgTWVt
b3J5TW9kZTo6U2lnbmFsaW5nOgorICAgICAgICAgICAgaWYgKG1wcm90ZWN0KG1lbW9yeSgpLCBN
ZW1vcnk6OmZhc3RNYXBwZWRCeXRlcygpLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKSkgeworICAg
ICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8p
LCAiXG4iKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVGYXN0TWVtb3J5
KG1lbW9yeSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1lbW9yeU1vZGU6
OkJvdW5kc0NoZWNraW5nOiB7CisgICAgICAgICAgICBzd2l0Y2ggKG1fc2hhcmluZ01vZGUpIHsK
KyAgICAgICAgICAgIGNhc2UgTWVtb3J5U2hhcmluZ01vZGU6OkRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgR2lnYWNhZ2U6OmZyZWVWaXJ0dWFsUGFnZXMoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgbWVt
b3J5KCksIG1fc2l6ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IE1lbW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQ6IHsKKyAgICAgICAgICAgICAgICBpZiAobXByb3Rl
Y3QobWVtb3J5KCksIG1fbWFwcGVkQ2FwYWNpdHksIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpKSB7
CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJy
b3IoZXJybm8pLCAiXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbWVtb3J5TWFu
YWdlcigpLmZyZWVHcm93YWJsZUJvdW5kc0NoZWNraW5nTWVtb3J5KG1lbW9yeSgpLCBtX21hcHBl
ZENhcGFjaXR5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
Cit9CisKIE1lbW9yeTo6TWVtb3J5KCkKKyAgICA6IG1faGFuZGxlKGFkb3B0UmVmKCpuZXcgTWVt
b3J5SGFuZGxlKG51bGxwdHIsIDAsIDAsIFBhZ2VDb3VudCgwKSwgUGFnZUNvdW50KDApLCBNZW1v
cnlTaGFyaW5nTW9kZTo6RGVmYXVsdCwgTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKSkKIHsK
IH0KIAotTWVtb3J5OjpNZW1vcnkoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVt
LCBGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwg
RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4m
JiBncm93U3VjY2Vzc0NhbGxiYWNrKQotICAgIDogbV9pbml0aWFsKGluaXRpYWwpCi0gICAgLCBt
X21heGltdW0obWF4aW11bSkKK01lbW9yeTo6TWVtb3J5KFBhZ2VDb3VudCBpbml0aWFsLCBQYWdl
Q291bnQgbWF4aW11bSwgTWVtb3J5U2hhcmluZ01vZGUgc2hhcmluZ01vZGUsIEZ1bmN0aW9uPHZv
aWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBGdW5jdGlvbjx2b2lk
KFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdURjo6RnVuY3Rp
b248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNjZXNz
Q2FsbGJhY2spCisgICAgOiBtX2hhbmRsZShhZG9wdFJlZigqbmV3IE1lbW9yeUhhbmRsZShudWxs
cHRyLCAwLCAwLCBpbml0aWFsLCBtYXhpbXVtLCBzaGFyaW5nTW9kZSwgTWVtb3J5TW9kZTo6Qm91
bmRzQ2hlY2tpbmcpKSkKICAgICAsIG1fbm90aWZ5TWVtb3J5UHJlc3N1cmUoV1RGTW92ZShub3Rp
ZnlNZW1vcnlQcmVzc3VyZSkpCiAgICAgLCBtX3N5bmNUcnlUb1JlY2xhaW1NZW1vcnkoV1RGTW92
ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSkKICAgICAsIG1fZ3Jvd1N1Y2Nlc3NDYWxsYmFjayhX
VEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJhY2spKQogewogICAgIEFTU0VSVCghaW5pdGlhbC5ieXRl
cygpKTsKLSAgICBBU1NFUlQobV9tb2RlID09IE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKTsK
KyAgICBBU1NFUlQobW9kZSgpID09IE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKTsKICAgICBk
YXRhTG9nTG5JZih2ZXJib3NlLCAiTWVtb3J5OjpNZW1vcnkgYWxsb2NhdGluZyAiLCAqdGhpcyk7
CiAgICAgQVNTRVJUKCFtZW1vcnkoKSk7CiB9CiAKLU1lbW9yeTo6TWVtb3J5KHZvaWQqIG1lbW9y
eSwgUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBzaXplX3QgbWFwcGVkQ2Fw
YWNpdHksIE1lbW9yeU1vZGUgbW9kZSwgRnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYg
bm90aWZ5TWVtb3J5UHJlc3N1cmUsIEZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYg
c3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQ
YWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykKLSAgICA6IG1fbWVt
b3J5KG1lbW9yeSwgaW5pdGlhbC5ieXRlcygpKQotICAgICwgbV9zaXplKGluaXRpYWwuYnl0ZXMo
KSkKLSAgICAsIG1faW5pdGlhbChpbml0aWFsKQotICAgICwgbV9tYXhpbXVtKG1heGltdW0pCi0g
ICAgLCBtX21hcHBlZENhcGFjaXR5KG1hcHBlZENhcGFjaXR5KQotICAgICwgbV9tb2RlKG1vZGUp
CitNZW1vcnk6Ok1lbW9yeShSZWY8TWVtb3J5SGFuZGxlPiYmIGhhbmRsZSwgRnVuY3Rpb248dm9p
ZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIEZ1bmN0aW9uPHZvaWQo
U3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlv
bjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3ND
YWxsYmFjaykKKyAgICA6IG1faGFuZGxlKFdURk1vdmUoaGFuZGxlKSkKICAgICAsIG1fbm90aWZ5
TWVtb3J5UHJlc3N1cmUoV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSkpCiAgICAgLCBtX3N5
bmNUcnlUb1JlY2xhaW1NZW1vcnkoV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSkKICAg
ICAsIG1fZ3Jvd1N1Y2Nlc3NDYWxsYmFjayhXVEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJhY2spKQpA
QCAtMjcxLDcgKzM1MSwxMiBAQCBSZWY8TWVtb3J5PiBNZW1vcnk6OmNyZWF0ZSgpCiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVtb3J5KCkpOwogfQogCi1SZWZQdHI8TWVtb3J5PiBNZW1vcnk6
OnRyeUNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIFdURjo6RnVu
Y3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6
RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4m
JiBncm93U3VjY2Vzc0NhbGxiYWNrKQorUmVmPE1lbW9yeT4gTWVtb3J5OjpjcmVhdGUoUmVmPE1l
bW9yeUhhbmRsZT4mJiBoYW5kbGUsIFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+
JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNs
YWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1
Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lbW9yeShXVEZNb3ZlKGhhbmRsZSksIFdURk1vdmUo
bm90aWZ5TWVtb3J5UHJlc3N1cmUpLCBXVEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpLCBX
VEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJhY2spKSk7Cit9CisKK1JlZlB0cjxNZW1vcnk+IE1lbW9y
eTo6dHJ5Q3JlYXRlKFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgTWVtb3J5
U2hhcmluZ01vZGUgc2hhcmluZ01vZGUsIFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3Vy
ZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9S
ZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jv
d1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKQog
ewogICAgIEFTU0VSVChpbml0aWFsKTsKICAgICBSRUxFQVNFX0FTU0VSVCghbWF4aW11bSB8fCBt
YXhpbXVtID49IGluaXRpYWwpOyAvLyBUaGlzIHNob3VsZCBiZSBndWFyYW50ZWVkIGJ5IG91ciBj
YWxsZXIuCkBAIC0yODUsNyArMzcwLDcgQEAgUmVmUHRyPE1lbW9yeT4gTWVtb3J5Ojp0cnlDcmVh
dGUoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBXVEY6OkZ1bmMKICAgICBp
ZiAobWF4aW11bSAmJiAhbWF4aW11bUJ5dGVzKSB7CiAgICAgICAgIC8vIFVzZXIgc3BlY2lmaWVk
IGEgemVybyBtYXhpbXVtLCBpbml0aWFsIHNpemUgbXVzdCBhbHNvIGJlIHplcm8uCiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKCFpbml0aWFsQnl0ZXMpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1lbW9yeShpbml0aWFsLCBtYXhpbXVtLCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJl
KSwgV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92ZShncm93U3VjY2Vzc0Nh
bGxiYWNrKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lbW9yeShpbml0aWFsLCBt
YXhpbXVtLCBzaGFyaW5nTW9kZSwgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1v
dmUoc3luY1RyeVRvUmVjbGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykp
KTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBkb25lID0gdHJ5QWxsb2NhdGUoCkBAIC0zMDYsNDgg
KzM5MSw1NiBAQCBSZWZQdHI8TWVtb3J5PiBNZW1vcnk6OnRyeUNyZWF0ZShQYWdlQ291bnQgaW5p
dGlhbCwgUGFnZUNvdW50IG1heGltdW0sIFdURjo6RnVuYwogICAgIH0KICAgICAKICAgICBpZiAo
ZmFzdE1lbW9yeSkgewotICAgICAgICAKICAgICAgICAgaWYgKG1wcm90ZWN0KGZhc3RNZW1vcnkg
KyBpbml0aWFsQnl0ZXMsIE1lbW9yeTo6ZmFzdE1hcHBlZEJ5dGVzKCkgLSBpbml0aWFsQnl0ZXMs
IFBST1RfTk9ORSkpIHsKICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwg
c3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lbW9y
eShmYXN0TWVtb3J5LCBpbml0aWFsLCBtYXhpbXVtLCBNZW1vcnk6OmZhc3RNYXBwZWRCeXRlcygp
LCBNZW1vcnlNb2RlOjpTaWduYWxpbmcsIFdURk1vdmUobm90aWZ5TWVtb3J5UHJlc3N1cmUpLCBX
VEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpLCBXVEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJh
Y2spKSk7CisgICAgICAgIHJldHVybiBNZW1vcnk6OmNyZWF0ZShhZG9wdFJlZigqbmV3IE1lbW9y
eUhhbmRsZShmYXN0TWVtb3J5LCBpbml0aWFsQnl0ZXMsIE1lbW9yeTo6ZmFzdE1hcHBlZEJ5dGVz
KCksIGluaXRpYWwsIG1heGltdW0sIHNoYXJpbmdNb2RlLCBNZW1vcnlNb2RlOjpTaWduYWxpbmcp
KSwgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1vdmUoc3luY1RyeVRvUmVjbGFp
bU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykpOwogICAgIH0KICAgICAKICAg
ICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6Y3Jhc2hJZldlYkFzc2VtYmx5Q2FudEZhc3RNZW1vcnko
KSkpCiAgICAgICAgIHdlYkFzc2VtYmx5Q291bGRudEdldEZhc3RNZW1vcnkoKTsKIAogICAgIGlm
ICghaW5pdGlhbEJ5dGVzKQotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lbW9yeShpbml0
aWFsLCBtYXhpbXVtLCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJlKSwgV1RGTW92ZShzeW5j
VHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92ZShncm93U3VjY2Vzc0NhbGxiYWNrKSkpOwotICAg
IAotICAgIHZvaWQqIHNsb3dNZW1vcnkgPSBHaWdhY2FnZTo6dHJ5QWxsb2NhdGVaZXJvZWRWaXJ0
dWFsUGFnZXMoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgaW5pdGlhbEJ5dGVzKTsKLSAgICBpZiAoIXNs
b3dNZW1vcnkpIHsKLSAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVQaHlzaWNhbEJ5dGVzKGlu
aXRpYWxCeXRlcyk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE1lbW9yeShpbml0aWFsLCBtYXhpbXVtLCBzaGFyaW5nTW9kZSwgV1RGTW92ZShu
b3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1vdmUoc3luY1RyeVRvUmVjbGFpbU1lbW9yeSksIFdU
Rk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykpKTsKKworICAgIHN3aXRjaCAoc2hhcmluZ01vZGUp
IHsKKyAgICBjYXNlIE1lbW9yeVNoYXJpbmdNb2RlOjpEZWZhdWx0OiB7CisgICAgICAgIHZvaWQq
IHNsb3dNZW1vcnkgPSBHaWdhY2FnZTo6dHJ5QWxsb2NhdGVaZXJvZWRWaXJ0dWFsUGFnZXMoR2ln
YWNhZ2U6OlByaW1pdGl2ZSwgaW5pdGlhbEJ5dGVzKTsKKyAgICAgICAgaWYgKCFzbG93TWVtb3J5
KSB7CisgICAgICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZVBoeXNpY2FsQnl0ZXMoaW5pdGlh
bEJ5dGVzKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBNZW1vcnk6OmNyZWF0ZShhZG9wdFJlZigqbmV3IE1lbW9yeUhhbmRsZShzbG93TWVt
b3J5LCBpbml0aWFsQnl0ZXMsIGluaXRpYWxCeXRlcywgaW5pdGlhbCwgbWF4aW11bSwgc2hhcmlu
Z01vZGUsIE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSksIFdURk1vdmUobm90aWZ5TWVtb3J5
UHJlc3N1cmUpLCBXVEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpLCBXVEZNb3ZlKGdyb3dT
dWNjZXNzQ2FsbGJhY2spKTsKICAgICB9Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZW1vcnko
c2xvd01lbW9yeSwgaW5pdGlhbCwgbWF4aW11bSwgaW5pdGlhbEJ5dGVzLCBNZW1vcnlNb2RlOjpC
b3VuZHNDaGVja2luZywgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1vdmUoc3lu
Y1RyeVRvUmVjbGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykpKTsKLX0K
KyAgICBjYXNlIE1lbW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQ6IHsKKyAgICAgICAgY2hhciogc2xv
d01lbW9yeSA9IG51bGxwdHI7CisgICAgICAgIHRyeUFsbG9jYXRlKAorICAgICAgICAgICAgWyZd
ICgpIC0+IE1lbW9yeVJlc3VsdDo6S2luZCB7CisgICAgICAgICAgICAgICAgYXV0byByZXN1bHQg
PSBtZW1vcnlNYW5hZ2VyKCkudHJ5QWxsb2NhdGVHcm93YWJsZUJvdW5kc0NoZWNraW5nTWVtb3J5
KG1heGltdW1CeXRlcyk7CisgICAgICAgICAgICAgICAgc2xvd01lbW9yeSA9IGJpdHdpc2VfY2Fz
dDxjaGFyKj4ocmVzdWx0LmJhc2VQdHIpOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQu
a2luZDsKKyAgICAgICAgICAgIH0sIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBzeW5jVHJ5VG9SZWNs
YWltTWVtb3J5KTsKKyAgICAgICAgaWYgKCFzbG93TWVtb3J5KSB7CisgICAgICAgICAgICBtZW1v
cnlNYW5hZ2VyKCkuZnJlZVBoeXNpY2FsQnl0ZXMoaW5pdGlhbEJ5dGVzKTsKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICB9CiAKLU1lbW9yeTo6fk1lbW9yeSgpCi17Ci0gICAg
aWYgKG1fbWVtb3J5KSB7Ci0gICAgICAgIG1lbW9yeU1hbmFnZXIoKS5mcmVlUGh5c2ljYWxCeXRl
cyhtX3NpemUpOwotICAgICAgICBzd2l0Y2ggKG1fbW9kZSkgewotICAgICAgICBjYXNlIE1lbW9y
eU1vZGU6OlNpZ25hbGluZzoKLSAgICAgICAgICAgIGlmIChtcHJvdGVjdChtZW1vcnkoKSwgTWVt
b3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkpIHsKLSAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHN0cmVycm9yKGVycm5vKSwg
IlxuIik7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIG1lbW9yeU1hbmFnZXIoKS5mcmVlRmFzdE1lbW9yeSht
ZW1vcnkoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNZW1vcnlNb2RlOjpC
b3VuZHNDaGVja2luZzoKLSAgICAgICAgICAgIEdpZ2FjYWdlOjpmcmVlVmlydHVhbFBhZ2VzKEdp
Z2FjYWdlOjpQcmltaXRpdmUsIG1lbW9yeSgpLCBtX3NpemUpOwotICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGlmIChtcHJvdGVjdChzbG93TWVtb3J5ICsgaW5pdGlhbEJ5dGVzLCBtYXhpbXVt
Qnl0ZXMgLSBpbml0aWFsQnl0ZXMsIFBST1RfTk9ORSkpIHsKKyAgICAgICAgICAgIGRhdGFMb2co
Im1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gTWVtb3J5OjpjcmVhdGUoYWRvcHRSZWYoKm5ldyBNZW1vcnlIYW5kbGUoc2xvd01lbW9yeSwg
aW5pdGlhbEJ5dGVzLCBtYXhpbXVtQnl0ZXMsIGluaXRpYWwsIG1heGltdW0sIHNoYXJpbmdNb2Rl
LCBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpLCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNz
dXJlKSwgV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92ZShncm93U3VjY2Vz
c0NhbGxiYWNrKSk7CiAgICAgfQorICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCitNZW1vcnk6On5NZW1vcnkoKSA9IGRlZmF1
bHQ7CisKIHNpemVfdCBNZW1vcnk6OmZhc3RNYXBwZWRSZWR6b25lQnl0ZXMoKQogewogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KFBhZ2VDb3VudDo6cGFnZVNpemUpICogT3B0aW9uczo6
d2ViQXNzZW1ibHlGYXN0TWVtb3J5UmVkem9uZVBhZ2VzKCk7CkBAIC0zNTksMTggKzQ1Miw3NyBA
QCBzaXplX3QgTWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKQogICAgIHJldHVybiAoc3RhdGljX2Nh
c3Q8c2l6ZV90PigxKSA8PCAzMikgKyBmYXN0TWFwcGVkUmVkem9uZUJ5dGVzKCk7CiB9CiAKLWJv
b2wgTWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUZhc3RNZW1vcnkodm9pZCogYWRkcmVzcykKK2Jv
b2wgTWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUdyb3dhYmxlTWVtb3J5KHZvaWQqIGFkZHJlc3Mp
CiB7Ci0gICAgcmV0dXJuIG1lbW9yeU1hbmFnZXIoKS5pc0FkZHJlc3NJbkZhc3RNZW1vcnkoYWRk
cmVzcyk7CisgICAgcmV0dXJuIG1lbW9yeU1hbmFnZXIoKS5pc0FkZHJlc3NJbkdyb3dhYmxlTWVt
b3J5KGFkZHJlc3MpOwogfQogCi1FeHBlY3RlZDxQYWdlQ291bnQsIE1lbW9yeTo6R3Jvd0ZhaWxS
ZWFzb24+IE1lbW9yeTo6Z3JvdyhQYWdlQ291bnQgZGVsdGEpCitFeHBlY3RlZDxQYWdlQ291bnQs
IE1lbW9yeTo6R3Jvd0ZhaWxSZWFzb24+IE1lbW9yeTo6Z3Jvd1NoYXJlZChQYWdlQ291bnQgZGVs
dGEpCiB7Ci0gICAgY29uc3QgV2FzbTo6UGFnZUNvdW50IG9sZFBhZ2VDb3VudCA9IHNpemVJblBh
Z2VzKCk7CisgICAgV2FzbTo6UGFnZUNvdW50IG9sZFBhZ2VDb3VudDsKKyAgICBXYXNtOjpQYWdl
Q291bnQgbmV3UGFnZUNvdW50OworICAgIGF1dG8gcmVzdWx0ID0gKFsmXSgpIC0+IEV4cGVjdGVk
PFBhZ2VDb3VudCwgTWVtb3J5OjpHcm93RmFpbFJlYXNvbj4geworICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1faGFuZGxlLT5sb2NrKCkpOworCisgICAgICAgIG9sZFBhZ2VDb3VudCA9
IHNpemVJblBhZ2VzKCk7CisgICAgICAgIG5ld1BhZ2VDb3VudCA9IG9sZFBhZ2VDb3VudCArIGRl
bHRhOworICAgICAgICBpZiAoIW5ld1BhZ2VDb3VudCB8fCAhbmV3UGFnZUNvdW50LmlzVmFsaWQo
KSkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChHcm93RmFpbFJlYXNvbjo6SW52
YWxpZEdyb3dTaXplKTsKKyAgICAgICAgaWYgKG5ld1BhZ2VDb3VudC5ieXRlcygpID4gTUFYX0FS
UkFZX0JVRkZFUl9TSVpFKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEdyb3dG
YWlsUmVhc29uOjpPdXRPZk1lbW9yeSk7CisKKyAgICAgICAgaWYgKCFkZWx0YS5wYWdlQ291bnQo
KSkKKyAgICAgICAgICAgIHJldHVybiBvbGRQYWdlQ291bnQ7CisKKyAgICAgICAgZGF0YUxvZ0xu
SWYodmVyYm9zZSwgIk1lbW9yeTo6Z3JvdygiLCBkZWx0YSwgIikgdG8gIiwgbmV3UGFnZUNvdW50
LCAiIGZyb20gIiwgKnRoaXMpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChuZXdQYWdlQ291bnQg
PiBQYWdlQ291bnQ6OmZyb21CeXRlcyhzaXplKCkpKTsKKworICAgICAgICBpZiAobWF4aW11bSgp
ICYmIG5ld1BhZ2VDb3VudCA+IG1heGltdW0oKSkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChHcm93RmFpbFJlYXNvbjo6V291bGRFeGNlZWRNYXhpbXVtKTsKKworICAgICAgICBz
aXplX3QgZGVzaXJlZFNpemUgPSBuZXdQYWdlQ291bnQuYnl0ZXMoKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoZGVzaXJlZFNpemUgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoZGVzaXJlZFNpemUgPiBzaXplKCkpOworCisgICAgICAgIC8vIElmIHRo
ZSBtZW1vcnkgaXMgTWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZCwgd2UgYWxyZWFkeSBhbGxvY2F0
ZWQgZW5vdWdoIHZpcnR1YWwgYWRkcmVzcyBzcGFjZSBldmVuIGlmIHRoZSBtZW1vcnkgaXMgYm91
bmQtY2hlY2tpbmcgbW9kZS4gV2UgcGVyZm9ybSBtcHJvdGVjdCB0byBleHRlbmQuCisgICAgICAg
IHNpemVfdCBleHRyYUJ5dGVzID0gZGVzaXJlZFNpemUgLSBzaXplKCk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGV4dHJhQnl0ZXMpOworICAgICAgICBib29sIGFsbG9jYXRpb25TdWNjZXNzID0g
dHJ5QWxsb2NhdGUoCisgICAgICAgICAgICBbJl0gKCkgLT4gTWVtb3J5UmVzdWx0OjpLaW5kIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3J5TWFuYWdlcigpLnRyeUFsbG9jYXRlUGh5c2lj
YWxCeXRlcyhleHRyYUJ5dGVzKTsKKyAgICAgICAgICAgIH0sIFtdKFdhc206Ok1lbW9yeTo6Tm90
aWZ5UHJlc3N1cmUpIHsgfSwgW10oTWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7IH0pOworICAg
ICAgICBpZiAoIWFsbG9jYXRpb25TdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpPdXRPZk1lbW9yeSk7CisKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQobWVtb3J5KCkpOworCisgICAgICAgIC8vIFNpZ25hbGluZyBtZW1vcnkgbXVzdCBoYXZl
IGJlZW4gcHJlLWFsbG9jYXRlZCB2aXJ0dWFsbHkuCisgICAgICAgIHVpbnQ4X3QqIHN0YXJ0QWRk
cmVzcyA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtZW1vcnkoKSkgKyBzaXplKCk7CiAKKyAgICAg
ICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1hcmtpbmcgV2ViQXNzZW1ibHkgbWVtb3J5J3MgIiwg
UmF3UG9pbnRlcihtZW1vcnkoKSksICIgYXMgcmVhZCt3cml0ZSBpbiByYW5nZSBbIiwgUmF3UG9p
bnRlcihzdGFydEFkZHJlc3MpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXJ0QWRkcmVzcyArIGV4dHJh
Qnl0ZXMpLCAiKSIpOworICAgICAgICBpZiAobXByb3RlY3Qoc3RhcnRBZGRyZXNzLCBleHRyYUJ5
dGVzLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKSkgeworICAgICAgICAgICAgZGF0YUxvZygibXBy
b3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIFdURjo6c3Rv
cmVTdG9yZUZlbmNlKCk7IC8vIEVuc3VyZSBzdG9yaW5nICJzaXplIiBoYXBwZW5zIGFmdGVyIG1w
cm90ZWN0IGlzIGRvbmUuCisgICAgICAgIG1faGFuZGxlLT5ncm93VG9TaXplKGRlc2lyZWRTaXpl
KTsKKyAgICAgICAgcmV0dXJuIG9sZFBhZ2VDb3VudDsKKyAgICB9KCkpOworICAgIGlmIChyZXN1
bHQpCisgICAgICAgIG1fZ3Jvd1N1Y2Nlc3NDYWxsYmFjayhHcm93U3VjY2Vzc1RhZywgb2xkUGFn
ZUNvdW50LCBuZXdQYWdlQ291bnQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0V4cGVjdGVk
PFBhZ2VDb3VudCwgTWVtb3J5OjpHcm93RmFpbFJlYXNvbj4gTWVtb3J5Ojpncm93KFBhZ2VDb3Vu
dCBkZWx0YSkKK3sKICAgICBpZiAoIWRlbHRhLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpJbnZhbGlkRGVsdGEpOwotICAgIAorCisgICAg
aWYgKHNoYXJpbmdNb2RlKCkgPT0gTWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZCkKKyAgICAgICAg
cmV0dXJuIGdyb3dTaGFyZWQoZGVsdGEpOworCisgICAgY29uc3QgV2FzbTo6UGFnZUNvdW50IG9s
ZFBhZ2VDb3VudCA9IHNpemVJblBhZ2VzKCk7CiAgICAgY29uc3QgV2FzbTo6UGFnZUNvdW50IG5l
d1BhZ2VDb3VudCA9IG9sZFBhZ2VDb3VudCArIGRlbHRhOwogICAgIGlmICghbmV3UGFnZUNvdW50
IHx8ICFuZXdQYWdlQ291bnQuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoR3Jvd0ZhaWxSZWFzb246OkludmFsaWRHcm93U2l6ZSk7CkBAIC0zOTEsNTIgKzU0Myw1OCBA
QCBFeHBlY3RlZDxQYWdlQ291bnQsIE1lbW9yeTo6R3Jvd0ZhaWxSZWFzb24+IE1lbW9yeTo6Z3Jv
dyhQYWdlQ291bnQgZGVsdGEpCiAgICAgICAgIHJldHVybiBzdWNjZXNzKCk7CiAKICAgICBkYXRh
TG9nTG5JZih2ZXJib3NlLCAiTWVtb3J5Ojpncm93KCIsIGRlbHRhLCAiKSB0byAiLCBuZXdQYWdl
Q291bnQsICIgZnJvbSAiLCAqdGhpcyk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobmV3UGFnZUNvdW50
ID4gUGFnZUNvdW50Ojpmcm9tQnl0ZXMobV9zaXplKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobmV3
UGFnZUNvdW50ID4gUGFnZUNvdW50Ojpmcm9tQnl0ZXMoc2l6ZSgpKSk7CiAKICAgICBpZiAobWF4
aW11bSgpICYmIG5ld1BhZ2VDb3VudCA+IG1heGltdW0oKSkKICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpXb3VsZEV4Y2VlZE1heGltdW0pOwogCiAgICAgc2l6
ZV90IGRlc2lyZWRTaXplID0gbmV3UGFnZUNvdW50LmJ5dGVzKCk7CiAgICAgUkVMRUFTRV9BU1NF
UlQoZGVzaXJlZFNpemUgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKLSAgICBSRUxFQVNFX0FT
U0VSVChkZXNpcmVkU2l6ZSA+IG1fc2l6ZSk7Ci0gICAgc2l6ZV90IGV4dHJhQnl0ZXMgPSBkZXNp
cmVkU2l6ZSAtIG1fc2l6ZTsKLSAgICBSRUxFQVNFX0FTU0VSVChleHRyYUJ5dGVzKTsKLSAgICBi
b29sIGFsbG9jYXRpb25TdWNjZXNzID0gdHJ5QWxsb2NhdGUoCi0gICAgICAgIFsmXSAoKSAtPiBN
ZW1vcnlSZXN1bHQ6OktpbmQgewotICAgICAgICAgICAgcmV0dXJuIG1lbW9yeU1hbmFnZXIoKS50
cnlBbGxvY2F0ZVBoeXNpY2FsQnl0ZXMoZXh0cmFCeXRlcyk7Ci0gICAgICAgIH0sIG1fbm90aWZ5
TWVtb3J5UHJlc3N1cmUsIG1fc3luY1RyeVRvUmVjbGFpbU1lbW9yeSk7Ci0gICAgaWYgKCFhbGxv
Y2F0aW9uU3VjY2VzcykKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEdyb3dGYWlsUmVh
c29uOjpPdXRPZk1lbW9yeSk7Ci0KKyAgICBSRUxFQVNFX0FTU0VSVChkZXNpcmVkU2l6ZSA+IHNp
emUoKSk7CiAgICAgc3dpdGNoIChtb2RlKCkpIHsKICAgICBjYXNlIE1lbW9yeU1vZGU6OkJvdW5k
c0NoZWNraW5nOiB7CisgICAgICAgIGJvb2wgYWxsb2NhdGlvblN1Y2Nlc3MgPSB0cnlBbGxvY2F0
ZSgKKyAgICAgICAgICAgIFsmXSAoKSAtPiBNZW1vcnlSZXN1bHQ6OktpbmQgeworICAgICAgICAg
ICAgICAgIHJldHVybiBtZW1vcnlNYW5hZ2VyKCkudHJ5QWxsb2NhdGVQaHlzaWNhbEJ5dGVzKGRl
c2lyZWRTaXplKTsKKyAgICAgICAgICAgIH0sIG1fbm90aWZ5TWVtb3J5UHJlc3N1cmUsIG1fc3lu
Y1RyeVRvUmVjbGFpbU1lbW9yeSk7CisgICAgICAgIGlmICghYWxsb2NhdGlvblN1Y2Nlc3MpCisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoR3Jvd0ZhaWxSZWFzb246Ok91dE9mTWVt
b3J5KTsKKwogICAgICAgICBSRUxFQVNFX0FTU0VSVChtYXhpbXVtKCkuYnl0ZXMoKSAhPSAwKTsK
IAogICAgICAgICB2b2lkKiBuZXdNZW1vcnkgPSBHaWdhY2FnZTo6dHJ5QWxsb2NhdGVaZXJvZWRW
aXJ0dWFsUGFnZXMoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgZGVzaXJlZFNpemUpOwogICAgICAgICBp
ZiAoIW5ld01lbW9yeSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChHcm93RmFp
bFJlYXNvbjo6T3V0T2ZNZW1vcnkpOwogCi0gICAgICAgIG1lbWNweShuZXdNZW1vcnksIG1lbW9y
eSgpLCBtX3NpemUpOwotICAgICAgICBpZiAobV9tZW1vcnkpCi0gICAgICAgICAgICBHaWdhY2Fn
ZTo6ZnJlZVZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBtZW1vcnkoKSwgbV9zaXpl
KTsKLSAgICAgICAgbV9tZW1vcnkgPSBDYWdlZE1lbW9yeShuZXdNZW1vcnksIGRlc2lyZWRTaXpl
KTsKLSAgICAgICAgbV9tYXBwZWRDYXBhY2l0eSA9IGRlc2lyZWRTaXplOwotICAgICAgICBtX3Np
emUgPSBkZXNpcmVkU2l6ZTsKKyAgICAgICAgbWVtY3B5KG5ld01lbW9yeSwgbWVtb3J5KCksIHNp
emUoKSk7CisgICAgICAgIGF1dG8gbmV3SGFuZGxlID0gYWRvcHRSZWYoKm5ldyBNZW1vcnlIYW5k
bGUobmV3TWVtb3J5LCBkZXNpcmVkU2l6ZSwgZGVzaXJlZFNpemUsIGluaXRpYWwoKSwgbWF4aW11
bSgpLCBzaGFyaW5nTW9kZSgpLCBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpOworICAgICAg
ICBtX2hhbmRsZSA9IFdURk1vdmUobmV3SGFuZGxlKTsKKwogICAgICAgICBBU1NFUlQobWVtb3J5
KCkgPT0gbmV3TWVtb3J5KTsKICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MoKTsKICAgICB9CiAgICAg
Y2FzZSBNZW1vcnlNb2RlOjpTaWduYWxpbmc6IHsKKyAgICAgICAgc2l6ZV90IGV4dHJhQnl0ZXMg
PSBkZXNpcmVkU2l6ZSAtIHNpemUoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXh0cmFCeXRl
cyk7CisgICAgICAgIGJvb2wgYWxsb2NhdGlvblN1Y2Nlc3MgPSB0cnlBbGxvY2F0ZSgKKyAgICAg
ICAgICAgIFsmXSAoKSAtPiBNZW1vcnlSZXN1bHQ6OktpbmQgeworICAgICAgICAgICAgICAgIHJl
dHVybiBtZW1vcnlNYW5hZ2VyKCkudHJ5QWxsb2NhdGVQaHlzaWNhbEJ5dGVzKGV4dHJhQnl0ZXMp
OworICAgICAgICAgICAgfSwgbV9ub3RpZnlNZW1vcnlQcmVzc3VyZSwgbV9zeW5jVHJ5VG9SZWNs
YWltTWVtb3J5KTsKKyAgICAgICAgaWYgKCFhbGxvY2F0aW9uU3VjY2VzcykKKyAgICAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChHcm93RmFpbFJlYXNvbjo6T3V0T2ZNZW1vcnkpOworCiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1lbW9yeSgpKTsKKwogICAgICAgICAvLyBTaWduYWxpbmcg
bWVtb3J5IG11c3QgaGF2ZSBiZWVuIHByZS1hbGxvY2F0ZWQgdmlydHVhbGx5LgotICAgICAgICB1
aW50OF90KiBzdGFydEFkZHJlc3MgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWVtb3J5KCkpICsg
bV9zaXplOworICAgICAgICB1aW50OF90KiBzdGFydEFkZHJlc3MgPSBzdGF0aWNfY2FzdDx1aW50
OF90Kj4obWVtb3J5KCkpICsgc2l6ZSgpOwogICAgICAgICAKICAgICAgICAgZGF0YUxvZ0xuSWYo
dmVyYm9zZSwgIk1hcmtpbmcgV2ViQXNzZW1ibHkgbWVtb3J5J3MgIiwgUmF3UG9pbnRlcihtZW1v
cnkoKSksICIgYXMgcmVhZCt3cml0ZSBpbiByYW5nZSBbIiwgUmF3UG9pbnRlcihzdGFydEFkZHJl
c3MpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXJ0QWRkcmVzcyArIGV4dHJhQnl0ZXMpLCAiKSIpOwog
ICAgICAgICBpZiAobXByb3RlY3Qoc3RhcnRBZGRyZXNzLCBleHRyYUJ5dGVzLCBQUk9UX1JFQUQg
fCBQUk9UX1dSSVRFKSkgewogICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAi
LCBzdHJlcnJvcihlcnJubyksICJcbiIpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgfQotICAgICAgICBtX21lbW9yeS5yZWNhZ2UobV9zaXplLCBk
ZXNpcmVkU2l6ZSk7Ci0gICAgICAgIG1fc2l6ZSA9IGRlc2lyZWRTaXplOworCisgICAgICAgIG1f
aGFuZGxlLT5ncm93VG9TaXplKGRlc2lyZWRTaXplKTsKICAgICAgICAgcmV0dXJuIHN1Y2Nlc3Mo
KTsKICAgICB9CiAgICAgfQpAQCAtNDU5LDcgKzYxNyw4IEBAIHZvaWQgTWVtb3J5OjpyZWdpc3Rl
ckluc3RhbmNlKEluc3RhbmNlKiBpbnN0YW5jZSkKIAogdm9pZCBNZW1vcnk6OmR1bXAoUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBvdXQucHJpbnQoIk1lbW9yeSBhdCAiLCBSYXdQb2lu
dGVyKG1lbW9yeSgpKSwgIiwgc2l6ZSAiLCBtX3NpemUsICJCIGNhcGFjaXR5ICIsIG1fbWFwcGVk
Q2FwYWNpdHksICJCLCBpbml0aWFsICIsIG1faW5pdGlhbCwgIiBtYXhpbXVtICIsIG1fbWF4aW11
bSwgIiBtb2RlICIsIG1ha2VTdHJpbmcobV9tb2RlKSk7CisgICAgYXV0byBoYW5kbGUgPSBtX2hh
bmRsZS5jb3B5UmVmKCk7CisgICAgb3V0LnByaW50KCJNZW1vcnkgYXQgIiwgUmF3UG9pbnRlciho
YW5kbGUtPm1lbW9yeSgpKSwgIiwgc2l6ZSAiLCBoYW5kbGUtPnNpemUoKSwgIkIgY2FwYWNpdHkg
IiwgaGFuZGxlLT5tYXBwZWRDYXBhY2l0eSgpLCAiQiwgaW5pdGlhbCAiLCBoYW5kbGUtPmluaXRp
YWwoKSwgIiBtYXhpbXVtICIsIGhhbmRsZS0+bWF4aW11bSgpLCAiIG1vZGUgIiwgbWFrZVN0cmlu
ZyhoYW5kbGUtPm1vZGUoKSksICIgc2hhcmluZ01vZGUgIiwgbWFrZVN0cmluZyhoYW5kbGUtPnNo
YXJpbmdNb2RlKCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtTWVtb3J5LmgKaW5kZXggOTY3MDgzOGYxNzExZjgyZTdiYjRlMTViZjhiNWRk
M2I4NDgyNmI1MS4uMDFlMmQ0NmYwYTQ2NmZlOGY3ZDJmYWU5ZjI4NzcxNGVjZGZjZmQ2MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuaApAQCAtNDQsMzkgKzQ0LDgwIEBA
IGNsYXNzIFByaW50U3RyZWFtOwogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworCiBuYW1lc3BhY2UgV2FzbSB7CiAKIGNsYXNzIEluc3RhbmNlOwogCi1j
bGFzcyBNZW1vcnkgOiBwdWJsaWMgUmVmQ291bnRlZDxNZW1vcnk+IHsKK2NsYXNzIE1lbW9yeUhh
bmRsZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNZW1vcnlIYW5kbGU+IHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZW1vcnlIYW5kbGUpOworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworICAgIGZyaWVuZCBMTEludE9mZnNldHNFeHRyYWN0b3I7CitwdWJsaWM6
CisgICAgTWVtb3J5SGFuZGxlKHZvaWQqLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG1hcHBlZENhcGFj
aXR5LCBQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIE1lbW9yeVNoYXJpbmdN
b2RlLCBNZW1vcnlNb2RlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB+TWVtb3J5SGFuZGxlKCk7
CisKKyAgICB2b2lkKiBtZW1vcnkoKSBjb25zdCB7IEFTU0VSVChtX21lbW9yeS5nZXRNYXlCZU51
bGwobV9tYXBwZWRDYXBhY2l0eSkgPT0gbV9tZW1vcnkuZ2V0VW5zYWZlKCkpOyByZXR1cm4gbV9t
ZW1vcnkuZ2V0TWF5QmVOdWxsKG1fbWFwcGVkQ2FwYWNpdHkpOyB9CisgICAgc2l6ZV90IHNpemUo
KSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBzaXplX3QgbWFwcGVkQ2FwYWNpdHkoKSBj
b25zdCB7IHJldHVybiBtX21hcHBlZENhcGFjaXR5OyB9CisgICAgUGFnZUNvdW50IGluaXRpYWwo
KSBjb25zdCB7IHJldHVybiBtX2luaXRpYWw7IH0KKyAgICBQYWdlQ291bnQgbWF4aW11bSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWF4aW11bTsgfQorICAgIE1lbW9yeVNoYXJpbmdNb2RlIHNoYXJpbmdN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyaW5nTW9kZTsgfQorICAgIE1lbW9yeU1vZGUgbW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0
T2ZTaXplKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1lbW9yeUhhbmRsZSwgbV9zaXplKTsg
fQorICAgIExvY2smIGxvY2soKSB7IHJldHVybiBtX2xvY2s7IH0KKworICAgIHZvaWQgZ3Jvd1Rv
U2l6ZShzaXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIG1fc2l6ZSA9IHNpemU7CisgICAgfQor
Citwcml2YXRlOgorICAgIHVzaW5nIENhZ2VkTWVtb3J5ID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlBy
aW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OworICAgIENhZ2VkTWVtb3J5IG1fbWVtb3J5Owor
ICAgIHNpemVfdCBtX3NpemUgeyAwIH07CisgICAgc2l6ZV90IG1fbWFwcGVkQ2FwYWNpdHkgeyAw
IH07CisgICAgUGFnZUNvdW50IG1faW5pdGlhbDsKKyAgICBQYWdlQ291bnQgbV9tYXhpbXVtOwor
ICAgIE1lbW9yeVNoYXJpbmdNb2RlIG1fc2hhcmluZ01vZGUgeyBNZW1vcnlTaGFyaW5nTW9kZTo6
RGVmYXVsdCB9OworICAgIE1lbW9yeU1vZGUgbV9tb2RlIHsgTWVtb3J5TW9kZTo6Qm91bmRzQ2hl
Y2tpbmcgfTsKKyAgICBMb2NrIG1fbG9jazsKK307CisKK2NsYXNzIE1lbW9yeSBmaW5hbCA6IHB1
YmxpYyBSZWZDb3VudGVkPE1lbW9yeT4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lbW9y
eSk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgZnJpZW5kIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKIHB1YmxpYzoKICAgICB2b2lkIGR1bXAoV1RGOjpQcmludFN0cmVhbSYpIGNv
bnN0OwogCi0gICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9t
ZW1vcnk7IH0KKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFt
X2hhbmRsZS0+bWVtb3J5KCk7IH0KICAgICAKICAgICBlbnVtIE5vdGlmeVByZXNzdXJlIHsgTm90
aWZ5UHJlc3N1cmVUYWcgfTsKICAgICBlbnVtIFN5bmNUcnlUb1JlY2xhaW0geyBTeW5jVHJ5VG9S
ZWNsYWltVGFnIH07CiAgICAgZW51bSBHcm93U3VjY2VzcyB7IEdyb3dTdWNjZXNzVGFnIH07CiAK
ICAgICBzdGF0aWMgUmVmPE1lbW9yeT4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFJlZlB0cjxNZW1v
cnk+IHRyeUNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIFdURjo6
RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdU
Rjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVt
b3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50
KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmPE1lbW9yeT4gY3JlYXRlKFJlZjxNZW1vcnlIYW5kbGU+JiYsIFdURjo6RnVuY3Rpb248dm9p
ZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rpb248
dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1
bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3Vj
Y2Vzc0NhbGxiYWNrKTsKKyAgICBzdGF0aWMgUmVmUHRyPE1lbW9yeT4gdHJ5Q3JlYXRlKFBhZ2VD
b3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgTWVtb3J5U2hhcmluZ01vZGUsIFdURjo6
RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdU
Rjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVt
b3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50
KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKTsKIAotICAgIH5NZW1vcnkoKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSB+TWVtb3J5KCk7CiAKICAgICBzdGF0aWMgc2l6ZV90IGZhc3RNYXBwZWRSZWR6
b25lQnl0ZXMoKTsKICAgICBzdGF0aWMgc2l6ZV90IGZhc3RNYXBwZWRCeXRlcygpOyAvLyBJbmNs
dWRlcyByZWR6b25lLgotICAgIHN0YXRpYyBib29sIGFkZHJlc3NJc0luQWN0aXZlRmFzdE1lbW9y
eSh2b2lkKik7Ci0KLSAgICB2b2lkKiBtZW1vcnkoKSBjb25zdCB7IEFTU0VSVChtX21lbW9yeS5n
ZXRNYXlCZU51bGwoc2l6ZSgpKSA9PSBtX21lbW9yeS5nZXRVbnNhZmUoKSk7IHJldHVybiBtX21l
bW9yeS5nZXRNYXlCZU51bGwoc2l6ZSgpKTsgfQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaXplOyB9Ci0gICAgUGFnZUNvdW50IHNpemVJblBhZ2VzKCkgY29uc3QgeyByZXR1
cm4gUGFnZUNvdW50Ojpmcm9tQnl0ZXMobV9zaXplKTsgfQorICAgIHN0YXRpYyBib29sIGFkZHJl
c3NJc0luQWN0aXZlR3Jvd2FibGVNZW1vcnkodm9pZCopOwogCi0gICAgUGFnZUNvdW50IGluaXRp
YWwoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWw7IH0KLSAgICBQYWdlQ291bnQgbWF4aW11bSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11bTsgfQorICAgIHZvaWQqIG1lbW9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1faGFuZGxlLT5tZW1vcnkoKTsgfQorICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYW5kbGUtPnNpemUoKTsgfQorICAgIFBhZ2VDb3VudCBzaXplSW5QYWdlcygpIGNv
bnN0IHsgcmV0dXJuIFBhZ2VDb3VudDo6ZnJvbUJ5dGVzKHNpemUoKSk7IH0KKyAgICBzaXplX3Qg
Ym91bmRzQ2hlY2tpbmdTaXplKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUtPm1hcHBlZENhcGFj
aXR5KCk7IH0KKyAgICBQYWdlQ291bnQgaW5pdGlhbCgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxl
LT5pbml0aWFsKCk7IH0KKyAgICBQYWdlQ291bnQgbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFuZGxlLT5tYXhpbXVtKCk7IH0KKyAgICBNZW1vcnlIYW5kbGUmIGhhbmRsZSgpIHsgcmV0dXJu
IG1faGFuZGxlLmdldCgpOyB9CiAKLSAgICBNZW1vcnlNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVy
biBtX21vZGU7IH0KKyAgICBNZW1vcnlTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1faGFuZGxlLT5zaGFyaW5nTW9kZSgpOyB9CisgICAgTWVtb3J5TW9kZSBtb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9oYW5kbGUtPm1vZGUoKTsgfQogCiAgICAgZW51bSBjbGFzcyBHcm93
RmFpbFJlYXNvbiB7CiAgICAgICAgIEludmFsaWREZWx0YSwKQEAgLTg5LDIxICsxMzAsMTYgQEAg
Y2xhc3MgTWVtb3J5IDogcHVibGljIFJlZkNvdW50ZWQ8TWVtb3J5PiB7CiAKICAgICB2b2lkIGNo
ZWNrKCkgeyAgQVNTRVJUKCFkZWxldGlvbkhhc0JlZ3VuKCkpOyB9CiAKLSAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mTWVtb3J5KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1lbW9yeSwg
bV9tZW1vcnkpOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNpemUoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoTWVtb3J5LCBtX3NpemUpOyB9CisgICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZkhhbmRsZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihNZW1vcnksIG1faGFu
ZGxlKTsgfQogCiBwcml2YXRlOgogICAgIE1lbW9yeSgpOwotICAgIE1lbW9yeSh2b2lkKiBtZW1v
cnksIFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgc2l6ZV90IG1hcHBlZENh
cGFjaXR5LCBNZW1vcnlNb2RlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYm
IG5vdGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFp
bSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNj
ZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayk7Ci0gICAg
TWVtb3J5KFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgV1RGOjpGdW5jdGlv
bjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgV1RGOjpGdW5j
dGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdU
Rjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdy
b3dTdWNjZXNzQ2FsbGJhY2spOworICAgIE1lbW9yeShSZWY8TWVtb3J5SGFuZGxlPiYmLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1l
bW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3Vu
dCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayk7CisgICAgTWVtb3J5KFBhZ2VDb3VudCBpbml0aWFs
LCBQYWdlQ291bnQgbWF4aW11bSwgTWVtb3J5U2hhcmluZ01vZGUsIFdURjo6RnVuY3Rpb248dm9p
ZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rpb248
dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1
bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3Vj
Y2Vzc0NhbGxiYWNrKTsKIAotICAgIHVzaW5nIENhZ2VkTWVtb3J5ID0gQ2FnZWRQdHI8R2lnYWNh
Z2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwotICAgIENhZ2VkTWVtb3J5IG1fbWVt
b3J5OwotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAgUGFnZUNvdW50IG1faW5pdGlhbDsK
LSAgICBQYWdlQ291bnQgbV9tYXhpbXVtOwotICAgIHNpemVfdCBtX21hcHBlZENhcGFjaXR5IHsg
MCB9OwotICAgIE1lbW9yeU1vZGUgbV9tb2RlIHsgTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcg
fTsKKyAgICBFeHBlY3RlZDxQYWdlQ291bnQsIEdyb3dGYWlsUmVhc29uPiBncm93U2hhcmVkKFBh
Z2VDb3VudCk7CisKKyAgICBSZWY8TWVtb3J5SGFuZGxlPiBtX2hhbmRsZTsKICAgICBXVEY6OkZ1
bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiBtX25vdGlmeU1lbW9yeVByZXNzdXJlOwogICAg
IFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4gbV9zeW5jVHJ5VG9SZWNsYWlt
TWVtb3J5OwogICAgIFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQ
YWdlQ291bnQpPiBtX2dyb3dTdWNjZXNzQ2FsbGJhY2s7CkBAIC0xMTksNyArMTU1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIGNsYXNzIE1lbW9yeSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIHNpemVfdCBtYXhGYXN0TWVtb3J5Q291bnQoKSB7IHJldHVybiAwOyB9Ci0gICAg
c3RhdGljIGJvb2wgYWRkcmVzc0lzSW5BY3RpdmVGYXN0TWVtb3J5KHZvaWQqKSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHN0YXRpYyBib29sIGFkZHJlc3NJc0luQWN0aXZlR3Jvd2FibGVNZW1vcnko
dm9pZCopIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2Fz
bQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9y
bWF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1h
dGlvbi5jcHAKaW5kZXggNmI0YzJkMWZkNzM4NGQ3ZGNhMzAzMThkNzJjMWY1NjExOWY1ZjU2MC4u
ZjJjNmZhNTA4OTg4YzBjNDkwODAzNzE4MzIxNjg3MWU4NTQwY2ZlMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCkBAIC00
MiwxOSArNDIsMTkgQEAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBQaW5uZWRSZWdpc3Rlcklu
Zm86OmdldCgpCiAgICAgICAgIGlmICghQ29udGV4dDo6dXNlRmFzdFRMUygpKQogICAgICAgICAg
ICAgKytudW1iZXJPZlBpbm5lZFJlZ2lzdGVyczsKICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnlQ
b2ludGVyID0gR1BSSW5mbzo6cmVnQ1MzOwotICAgICAgICBHUFJSZWcgc2l6ZVJlZ2lzdGVyID0g
R1BSSW5mbzo6cmVnQ1M0OworICAgICAgICBHUFJSZWcgYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0
ZXIgPSBHUFJJbmZvOjpyZWdDUzQ7CiAgICAgICAgIEdQUlJlZyB3YXNtQ29udGV4dEluc3RhbmNl
UG9pbnRlciA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIGlmICghQ29udGV4dDo6dXNlRmFzdFRM
UygpKQogICAgICAgICAgICAgd2FzbUNvbnRleHRJbnN0YW5jZVBvaW50ZXIgPSBHUFJJbmZvOjpy
ZWdDUzA7CiAKLSAgICAgICAgc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvLmNvbnN0cnVjdChzaXpl
UmVnaXN0ZXIsIGJhc2VNZW1vcnlQb2ludGVyLCB3YXNtQ29udGV4dEluc3RhbmNlUG9pbnRlcik7
CisgICAgICAgIHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mby5jb25zdHJ1Y3QoYm91bmRzQ2hlY2tp
bmdTaXplUmVnaXN0ZXIsIGJhc2VNZW1vcnlQb2ludGVyLCB3YXNtQ29udGV4dEluc3RhbmNlUG9p
bnRlcik7CiAgICAgfSk7CiAKICAgICByZXR1cm4gc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvLmdl
dCgpOwogfQogCi1QaW5uZWRSZWdpc3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyhHUFJSZWcg
c2l6ZVJlZ2lzdGVyLCBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXIsIEdQUlJlZyB3YXNtQ29udGV4
dEluc3RhbmNlUG9pbnRlcikKLSAgICA6IHNpemVSZWdpc3RlcihzaXplUmVnaXN0ZXIpCitQaW5u
ZWRSZWdpc3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyhHUFJSZWcgYm91bmRzQ2hlY2tpbmdT
aXplUmVnaXN0ZXIsIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlciwgR1BSUmVnIHdhc21Db250ZXh0
SW5zdGFuY2VQb2ludGVyKQorICAgIDogYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIoYm91bmRz
Q2hlY2tpbmdTaXplUmVnaXN0ZXIpCiAgICAgLCBiYXNlTWVtb3J5UG9pbnRlcihiYXNlTWVtb3J5
UG9pbnRlcikKICAgICAsIHdhc21Db250ZXh0SW5zdGFuY2VQb2ludGVyKHdhc21Db250ZXh0SW5z
dGFuY2VQb2ludGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU1lbW9yeUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TWVtb3J5SW5mb3JtYXRpb24uaAppbmRleCA0YjhlZjhlOGJjN2FjN2VmYzlhNzk5NDk0ZTI2ODkx
ZmE4ZGQ2MjlmLi4yM2E4NjUzMGJhZTEwZmRmN2UwZDQyZTM1YWI5MDc3YmI3M2RmNjVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24u
aApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAog
c3RydWN0IFBpbm5lZFNpemVSZWdpc3RlckluZm8gewotICAgIEdQUlJlZyBzaXplUmVnaXN0ZXI7
CisgICAgR1BSUmVnIGJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyOwogICAgIHVuc2lnbmVkIHNp
emVPZmZzZXQ7CiB9OwogCkBAIC01NiwxMSArNTYsMTEgQEAgY2xhc3MgUGlubmVkUmVnaXN0ZXJJ
bmZvIHsKICAgICAgICAgaWYgKHdhc21Db250ZXh0SW5zdGFuY2VQb2ludGVyICE9IEludmFsaWRH
UFJSZWcpCiAgICAgICAgICAgICByZXN1bHQuc2V0KHdhc21Db250ZXh0SW5zdGFuY2VQb2ludGVy
KTsKICAgICAgICAgaWYgKG1vZGUgIT0gTWVtb3J5TW9kZTo6U2lnbmFsaW5nKQotICAgICAgICAg
ICAgcmVzdWx0LnNldChzaXplUmVnaXN0ZXIpOworICAgICAgICAgICAgcmVzdWx0LnNldChib3Vu
ZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
Ci0gICAgR1BSUmVnIHNpemVSZWdpc3RlcjsKKyAgICBHUFJSZWcgYm91bmRzQ2hlY2tpbmdTaXpl
UmVnaXN0ZXI7CiAgICAgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyOwogICAgIEdQUlJlZyB3YXNt
Q29udGV4dEluc3RhbmNlUG9pbnRlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTWVtb3J5TW9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtTWVtb3J5TW9kZS5jcHAKaW5kZXggYjFiYzk4NWRkNzZiYmZmYjVkMmJiNWEzZDEwOGMw
NjdhNDczNzcyZC4uOWFkOGY4MGI2YWEyMmJmZjAzMmJkZDQ2ZDE3ODZlZmNkZWYzY2M0MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeU1vZGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlNb2RlLmNwcApAQCAtNDIs
NiArNDIsMTYgQEAgY29uc3QgY2hhciogbWFrZVN0cmluZyhNZW1vcnlNb2RlIG1vZGUpCiAgICAg
cmV0dXJuICIiOwogfQogCitjb25zdCBjaGFyKiBtYWtlU3RyaW5nKE1lbW9yeVNoYXJpbmdNb2Rl
IHNoYXJpbmdNb2RlKQoreworICAgIHN3aXRjaCAoc2hhcmluZ01vZGUpIHsKKyAgICBjYXNlIE1l
bW9yeVNoYXJpbmdNb2RlOjpEZWZhdWx0OiByZXR1cm4gIkRlZmF1bHQiOworICAgIGNhc2UgTWVt
b3J5U2hhcmluZ01vZGU6OlNoYXJlZDogcmV0dXJuICJTaGFyZWQiOworICAgIH0KKyAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAiIjsKK30KKwogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6Oldhc20KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlNb2RlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5TW9kZS5oCmluZGV4IGMwMzg3NDZkNjFk
NDJhOTUzY2NmNGI1ZDBmYjIwNzVlOTI2NTQxZjguLjUxYjIxMzM2Yzg5NDZiZGViODdjZjEzOTVh
ZDk5NzUzMTM1MTU4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21NZW1vcnlNb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9y
eU1vZGUuaApAQCAtNDAsNiArNDAsMTMgQEAgZW51bSBjbGFzcyBNZW1vcnlNb2RlIDogdWludDhf
dCB7CiBzdGF0aWMgY29uc3RleHByIHNpemVfdCBOdW1iZXJPZk1lbW9yeU1vZGVzID0gMjsKIEpT
X0VYUE9SVF9QUklWQVRFIGNvbnN0IGNoYXIqIG1ha2VTdHJpbmcoTWVtb3J5TW9kZSk7CiAKK2Vu
dW0gY2xhc3MgTWVtb3J5U2hhcmluZ01vZGUgOiB1aW50OF90IHsKKyAgICBEZWZhdWx0LAorICAg
IFNoYXJlZCwKK307CisKK0pTX0VYUE9SVF9QUklWQVRFIGNvbnN0IGNoYXIqIG1ha2VTdHJpbmco
TWVtb3J5U2hhcmluZ01vZGUpOworCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQogCiAjZW5k
aWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNUb1dhc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNUb1dhc20uY3BwCmluZGV4IGQ4ZDE1MjE0ZDQwZjBhODVjMzFmMmEyYjI5MmY4MzVkM2YzNjlk
NjYuLmJlOTQ4NzRhNWE0YjQ1N2QyMzJlZmQ4OGQ3NzlkMWJiM2Q5YjNmZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRlSlNUb1dhc21XcmFwcGVyKEND
YWxsSGVscGVycyYgaml0LCBjb25zdAogCiAgICAgaWYgKCEhaW5mby5tZW1vcnkpIHsKICAgICAg
ICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVyOwotICAg
ICAgICBHUFJSZWcgc2NyYXRjaE9yU2l6ZSA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpLnByb2xv
Z3VlU2NyYXRjaEdQUnNbMF07CisgICAgICAgIEdQUlJlZyBzY3JhdGNoT3JCb3VuZHNDaGVja2lu
Z1NpemUgPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5wcm9sb2d1ZVNjcmF0Y2hHUFJzWzBdOwog
CiAgICAgICAgIGlmIChDb250ZXh0Ojp1c2VGYXN0VExTKCkpCiAgICAgICAgICAgICBqaXQubG9h
ZFdhc21Db250ZXh0SW5zdGFuY2UoYmFzZU1lbW9yeSk7CkBAIC0yMjksMTUgKzIyOSwxNSBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRlSlNUb1dhc21XcmFwcGVyKEND
YWxsSGVscGVycyYgaml0LCBjb25zdAogICAgICAgICBHUFJSZWcgY3VycmVudEluc3RhbmNlR1BS
ID0gQ29udGV4dDo6dXNlRmFzdFRMUygpID8gYmFzZU1lbW9yeSA6IHdhc21Db250ZXh0SW5zdGFu
Y2VHUFI7CiAgICAgICAgIGlmIChpc0FSTTY0RSgpKSB7CiAgICAgICAgICAgICBpZiAobW9kZSAh
PSBXYXNtOjpNZW1vcnlNb2RlOjpTaWduYWxpbmcpCi0gICAgICAgICAgICAgICAgc2NyYXRjaE9y
U2l6ZSA9IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyOwotICAgICAgICAgICAgaml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKGN1cnJlbnRJbnN0YW5jZUdQUiwgV2FzbTo6SW5zdGFuY2U6
Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSwgc2NyYXRjaE9yU2l6ZSk7CisgICAgICAgICAg
ICAgICAgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplID0gcGlubmVkUmVncy5ib3VuZHNDaGVj
a2luZ1NpemVSZWdpc3RlcjsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6
QWRkcmVzcyhjdXJyZW50SW5zdGFuY2VHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hl
ZEJvdW5kc0NoZWNraW5nU2l6ZSgpKSwgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChtb2RlICE9IFdhc206Ok1lbW9yeU1vZGU6
OlNpZ25hbGluZykKLSAgICAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoY3VycmVudEluc3RhbmNlR1BSLCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRN
ZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAg
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGN1cnJlbnRJbnN0YW5jZUdQUiwgV2Fz
bTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkpLCBwaW5uZWRS
ZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsKICAgICAgICAgfQogCiAgICAgICAgIGpp
dC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjdXJyZW50SW5zdGFuY2VHUFIsIFdhc206
Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7Ci0gICAgICAg
IGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBz
Y3JhdGNoT3JTaXplLCBzY3JhdGNoT3JTaXplKTsKKyAgICAgICAgaml0LmNhZ2VDb25kaXRpb25h
bGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHNjcmF0Y2hPckJvdW5kc0NoZWNr
aW5nU2l6ZSwgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplKTsKICAgICB9CiAKICAgICBDQ2Fs
bEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC50aHJlYWRTYWZlUGF0Y2hhYmxlTmVhckNhbGwoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJ
bnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
SW5zdGFuY2UuY3BwCmluZGV4IDY2OTYxYzIzMmE0ZWE0ZTQ3NGY2NzczOTMyMzJjZDFlYTJlYzRj
NTkuLmU0OWZjNjkyNWE5OTVlNWUwYWY1OWJlZjNlNjAyMGZiZDQwM2JhMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNl
LmNwcApAQCAtMjkxLDcgKzI5MSw3IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNXZWJBc3Nl
bWJseUluc3RhbmNlOjp0cnlDcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCoKICAgICAgICAg
ICAgIGF1dG8qIGpzTWVtb3J5ID0gSlNXZWJBc3NlbWJseU1lbW9yeTo6dHJ5Q3JlYXRlKGdsb2Jh
bE9iamVjdCwgdm0sIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlNZW1vcnlTdHJ1Y3R1cmUoKSk7
CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwog
Ci0gICAgICAgICAgICBSZWZQdHI8V2FzbTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6
OnRyeUNyZWF0ZShtb2R1bGVJbmZvcm1hdGlvbi5tZW1vcnkuaW5pdGlhbCgpLCBtb2R1bGVJbmZv
cm1hdGlvbi5tZW1vcnkubWF4aW11bSgpLAorICAgICAgICAgICAgUmVmUHRyPFdhc206Ok1lbW9y
eT4gbWVtb3J5ID0gV2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUobW9kdWxlSW5mb3JtYXRpb24ubWVt
b3J5LmluaXRpYWwoKSwgbW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5Lm1heGltdW0oKSwgV2FzbTo6
TWVtb3J5U2hhcmluZ01vZGU6OkRlZmF1bHQsCiAgICAgICAgICAgICAgICAgWyZ2bV0gKFdhc206
Ok1lbW9yeTo6Tm90aWZ5UHJlc3N1cmUpIHsgdm0uaGVhcC5jb2xsZWN0QXN5bmMoQ29sbGVjdGlv
blNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpT
eW5jVHJ5VG9SZWNsYWltKSB7IHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVjdGlvblNjb3BlOjpG
dWxsKTsgfSwKICAgICAgICAgICAgICAgICBbJnZtLCBqc01lbW9yeV0gKFdhc206Ok1lbW9yeTo6
R3Jvd1N1Y2Nlc3MsIFdhc206OlBhZ2VDb3VudCBvbGRQYWdlQ291bnQsIFdhc206OlBhZ2VDb3Vu
dCBuZXdQYWdlQ291bnQpIHsganNNZW1vcnktPmdyb3dTdWNjZXNzQ2FsbGJhY2sodm0sIG9sZFBh
Z2VDb3VudCwgbmV3UGFnZUNvdW50KTsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCmluZGV4IGRmYjAyNzAzMTYzMmUw
M2JlM2YzOWI1OGY5OGIzNmU4MmY3MjYyM2YuLmY3YWM2NDQ5ODIxYmYxMDdhMTRmNzQ4ZDAxMmQx
ZjI5YzdiNzNlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJB
cnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKKyNpbmNsdWRlICJPYmpl
Y3RDb25zdHJ1Y3Rvci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzIsMTcgKzczLDM0IEBA
IEpTV2ViQXNzZW1ibHlNZW1vcnk6OkpTV2ViQXNzZW1ibHlNZW1vcnkoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotSlNBcnJheUJ1ZmZlciogSlNXZWJBc3NlbWJseU1lbW9y
eTo6YnVmZmVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTQXJyYXlC
dWZmZXIqIEpTV2ViQXNzZW1ibHlNZW1vcnk6OmJ1ZmZlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogewotICAgIGlmIChtX2J1ZmZlcldyYXBwZXIpCi0gICAgICAgIHJldHVybiBtX2J1
ZmZlcldyYXBwZXIuZ2V0KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byog
d3JhcHBlciA9IG1fYnVmZmVyV3JhcHBlci5nZXQoKTsKKyAgICBpZiAod3JhcHBlcikgeworICAg
ICAgICBpZiAobV9tZW1vcnktPnNoYXJpbmdNb2RlKCkgPT0gV2FzbTo6TWVtb3J5U2hhcmluZ01v
ZGU6OkRlZmF1bHQpCisgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAotICAgIC8vIFdlIGNh
bid0IHVzZSBhIHJlZiBoZXJlIHNpbmNlIGl0IGRvZXNuJ3QgaGF2ZSBhIGNvcHkgY29uc3RydWN0
b3IuLi4KLSAgICBSZWY8V2FzbTo6TWVtb3J5PiBwcm90ZWN0ZWRNZW1vcnkgPSBtX21lbW9yeS5n
ZXQoKTsKLSAgICBhdXRvIGRlc3RydWN0b3IgPSBjcmVhdGVTaGFyZWRUYXNrPHZvaWQodm9pZCop
PihbcHJvdGVjdGVkTWVtb3J5ID0gV1RGTW92ZShwcm90ZWN0ZWRNZW1vcnkpXSAodm9pZCopIHsg
fSk7CisgICAgICAgIEFTU0VSVChtX21lbW9yeS0+c2hhcmluZ01vZGUoKSA9PSBXYXNtOjpNZW1v
cnlTaGFyaW5nTW9kZTo6U2hhcmVkKTsKKyAgICAgICAgLy8gSWYgU2hhcmVkQXJyYXlCdWZmZXIn
cyB1bmRlcmx5aW5nIG1lbW9yeSBpcyBub3QgZ3Jvd24sIHdlIGNvbnRpbnVlIHVzaW5nIGNhY2hl
ZCB3cmFwcGVyLgorICAgICAgICBpZiAod3JhcHBlci0+aW1wbCgpLT5ieXRlTGVuZ3RoKCkgPT0g
bWVtb3J5KCkuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgfQorCisg
ICAgUmVmPFdhc206Ok1lbW9yeUhhbmRsZT4gcHJvdGVjdGVkSGFuZGxlID0gbV9tZW1vcnktPmhh
bmRsZSgpOworICAgIGF1dG8gZGVzdHJ1Y3RvciA9IGNyZWF0ZVNoYXJlZFRhc2s8dm9pZCh2b2lk
Kik+KFtwcm90ZWN0ZWRIYW5kbGUgPSBXVEZNb3ZlKHByb3RlY3RlZEhhbmRsZSldICh2b2lkKikg
eyB9KTsKICAgICBtX2J1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMobWVtb3J5
KCkubWVtb3J5KCksIG1lbW9yeSgpLnNpemUoKSwgV1RGTW92ZShkZXN0cnVjdG9yKSk7CiAgICAg
bV9idWZmZXItPm1ha2VXYXNtTWVtb3J5KCk7Ci0gICAgbV9idWZmZXJXcmFwcGVyLnNldCh2bSwg
dGhpcywgSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5QnVmZmVy
U3RydWN0dXJlKEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpLCBtX2J1ZmZlci5nZXQo
KSkpOworICAgIGlmIChtX21lbW9yeS0+c2hhcmluZ01vZGUoKSA9PSBXYXNtOjpNZW1vcnlTaGFy
aW5nTW9kZTo6U2hhcmVkKQorICAgICAgICBtX2J1ZmZlci0+bWFrZVNoYXJlZCgpOworICAgIGF1
dG8qIGFycmF5QnVmZmVyID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qt
PmFycmF5QnVmZmVyU3RydWN0dXJlKG1fYnVmZmVyLT5zaGFyaW5nTW9kZSgpKSwgbV9idWZmZXIu
Z2V0KCkpOworICAgIGlmIChtX21lbW9yeS0+c2hhcmluZ01vZGUoKSA9PSBXYXNtOjpNZW1vcnlT
aGFyaW5nTW9kZTo6U2hhcmVkKSB7CisgICAgICAgIG9iamVjdENvbnN0cnVjdG9yRnJlZXplKGds
b2JhbE9iamVjdCwgYXJyYXlCdWZmZXIpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIG1fYnVmZmVyV3JhcHBlci5zZXQodm0sIHRoaXMs
IGFycmF5QnVmZmVyKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX2J1ZmZlcldyYXBwZXIpOwogICAg
IHJldHVybiBtX2J1ZmZlcldyYXBwZXIuZ2V0KCk7CiB9CkBAIC0xMTcsNyArMTM1LDggQEAgdm9p
ZCBKU1dlYkFzc2VtYmx5TWVtb3J5Ojpncm93U3VjY2Vzc0NhbGxiYWNrKFZNJiB2bSwgV2FzbTo6
UGFnZUNvdW50IG9sZFBhZ2VDb3UKIHsKICAgICAvLyBXZSBuZWVkIHRvIGNsZWFyIG91dCB0aGUg
b2xkIGFycmF5IGJ1ZmZlciBiZWNhdXNlIGl0IG1pZ2h0IG5vdyBiZSBwb2ludGluZyB0byBzdGFs
ZSBtZW1vcnkuCiAgICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyLT5kZXRhY2go
dm0pOworICAgICAgICBpZiAobV9tZW1vcnktPnNoYXJpbmdNb2RlKCkgPT0gV2FzbTo6TWVtb3J5
U2hhcmluZ01vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICBtX2J1ZmZlci0+ZGV0YWNoKHZtKTsK
ICAgICAgICAgbV9idWZmZXIgPSBudWxscHRyOwogICAgICAgICBtX2J1ZmZlcldyYXBwZXIuY2xl
YXIoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5TWVtb3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5TWVtb3J5LmgKaW5kZXggYWI5YzQ3NDZiM2NmYTI1MGQ1MWViY2RmNDJiM2E1ZmRi
OWFiNTU1ZC4uZTQ5NDkwMzY5MmU1OTU0MWNmYTc5MDMzNzZhNDUzMmYwNTYzYTQ0OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnku
aApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCi0jaW5jbHVk
ZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1
ZGUgIldhc21NZW1vcnkuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgpAQCAtNDksMTYgKzQ5LDE2IEBAIGNsYXNzIEpTV2ViQXNzZW1ibHlNZW1vcnkgZmlu
YWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgICAgIHJldHVybiB2bS53ZWJBc3Nl
bWJseU1lbW9yeVNwYWNlPG1vZGU+KCk7CiAgICAgfQogCi0gICAgc3RhdGljIEpTV2ViQXNzZW1i
bHlNZW1vcnkqIHRyeUNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFZNJiwgU3RydWN0dXJlKik7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTV2ViQXNzZW1ibHlNZW1vcnkqIHRyeUNyZWF0
ZShKU0dsb2JhbE9iamVjdCosIFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAg
IERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAgICB2b2lkIGFkb3B0KFJlZjxXYXNtOjpNZW1vcnk+
JiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRvcHQoUmVmPFdhc206Ok1lbW9yeT4m
Jik7CiAgICAgV2FzbTo6TWVtb3J5JiBtZW1vcnkoKSB7IHJldHVybiBtX21lbW9yeS5nZXQoKTsg
fQotICAgIEpTQXJyYXlCdWZmZXIqIGJ1ZmZlcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0Kik7Cisg
ICAgSlNBcnJheUJ1ZmZlciogYnVmZmVyKEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgV2FzbTo6UGFn
ZUNvdW50IGdyb3coVk0mLCBKU0dsb2JhbE9iamVjdCosIHVpbnQzMl90IGRlbHRhKTsKLSAgICB2
b2lkIGdyb3dTdWNjZXNzQ2FsbGJhY2soVk0mLCBXYXNtOjpQYWdlQ291bnQgb2xkUGFnZUNvdW50
LCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGdyb3dTdWNjZXNzQ2FsbGJhY2soVk0mLCBXYXNtOjpQYWdlQ291bnQgb2xkUGFnZUNvdW50
LCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50KTsKIAogcHJpdmF0ZToKICAgICBKU1dlYkFz
c2VtYmx5TWVtb3J5KFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCmluZGV4IDk5Mjc2YzJkOWU2
MjdhZDIxNTNkZGZjYTQ5Yzc3OGUwYzc5YzgzY2EuLjc4ZGE2ZGMzZjRlYWVhZDNjODAwYWU0MmVj
MGU2ODgxNzY1ZTQ2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC0zNTcsMjAgKzM1NywyMCBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gV2ViQXNzZW1ibHlGdW5jdGlvbjo6anNDYWxs
RW50cnlwb2ludFNsb3coKQogCiAgICAgaWYgKCEhbW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5KSB7
CiAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRl
cjsKLSAgICAgICAgR1BSUmVnIHNjcmF0Y2hPclNpemUgPSBzdGFja0xpbWl0R1BSOworICAgICAg
ICBHUFJSZWcgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplID0gc3RhY2tMaW1pdEdQUjsKICAg
ICAgICAgYXV0byBtb2RlID0gaW5zdGFuY2UoKS0+bWVtb3J5TW9kZSgpOwogCiAgICAgICAgIGlm
IChpc0FSTTY0RSgpKSB7CiAgICAgICAgICAgICBpZiAobW9kZSAhPSBXYXNtOjpNZW1vcnlNb2Rl
OjpTaWduYWxpbmcpCi0gICAgICAgICAgICAgICAgc2NyYXRjaE9yU2l6ZSA9IHBpbm5lZFJlZ3Mu
c2l6ZVJlZ2lzdGVyOwotICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHNjcmF0Y2hHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUo
KSksIHNjcmF0Y2hPclNpemUpOworICAgICAgICAgICAgICAgIHNjcmF0Y2hPckJvdW5kc0NoZWNr
aW5nU2l6ZSA9IHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXI7CisgICAgICAg
ICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgV2FzbTo6
SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkpLCBzY3JhdGNoT3JC
b3VuZHNDaGVja2luZ1NpemUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKG1v
ZGUgIT0gV2FzbTo6TWVtb3J5TW9kZTo6U2lnbmFsaW5nKQotICAgICAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBXYXNtOjpJbnN0YW5jZTo6
b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlcik7Cisg
ICAgICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hH
UFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpKSwg
cGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7CiAgICAgICAgIH0KIAogICAg
ICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgV2FzbTo6
SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKLSAgICAgICAg
aml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHNj
cmF0Y2hPclNpemUsIHNjcmF0Y2hPclNpemUpOworICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFs
bHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgc2NyYXRjaE9yQm91bmRzQ2hlY2tp
bmdTaXplLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOwogICAgIH0KIAogICAgIC8vIFdl
IHVzZSB0aGlzIGNhbGxlZSB0byBpbmRpY2F0ZSBob3cgdG8gdW53aW5kIHBhc3QgdGhlc2UgdHlw
ZXMgb2YgZnJhbWVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcAppbmRleCA1MGNjY2EyNDFm
ZDViZTk3OTU2ZGYwODhiOTRhOGQ4YWIwZmYwZDA1Li4yNTZlYjBmZmMzNGFiNzM1YmM1MzI4N2M3
NWY2YjA3ZWM2YjhmN2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcApAQCAtNTYsOCAr
NTYsNiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0SlNXZWJBc3NlbWJseU1l
bW9yeSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgIT0gMSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJXZWJBc3NlbWJseS5NZW1vcnkgZXhw
ZWN0cyBleGFjdGx5IG9uZSBhcmd1bWVudCJfcykpKTsKIAogICAgIEpTT2JqZWN0KiBtZW1vcnlE
ZXNjcmlwdG9yOwogICAgIHsKQEAgLTEwMiwxMCArMTAwLDIzIEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TWVtb3J5LCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBXYXNtOjpNZW1vcnlTaGFyaW5nTW9kZSBz
aGFyaW5nTW9kZSA9IFdhc206Ok1lbW9yeVNoYXJpbmdNb2RlOjpEZWZhdWx0OworICAgIEpTVmFs
dWUgc2hhcmVkVmFsdWUgPSBtZW1vcnlEZXNjcmlwdG9yLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2hhcmVkIikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgYm9vbCBzaGFyZWQgPSBzaGFy
ZWRWYWx1ZS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGlmIChzaGFyZWQpIHsKKyAgICAg
ICAgaWYgKCFtYXhpbXVtUGFnZUNvdW50KQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiJ21heGltdW0nIHBhZ2UgY291bnQgbXVz
dCBiZSBkZWZpbmVkIGlmICdzaGFyZWQnIGlzIHRydWUiX3MpOworICAgICAgICBpZiAoIU9wdGlv
bnM6OnVzZVNoYXJlZEFycmF5QnVmZmVyKCkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJTaGFyZWQgV2ViQXNzZW1ibHkuTWVt
b3J5IGFuZCBTaGFyZWRBcnJheUJ1ZmZlciBhcmUgbm90IGVuYWJsZWQiX3MpOworICAgICAgICBz
aGFyaW5nTW9kZSA9IFdhc206Ok1lbW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQ7CisgICAgfQorCiAg
ICAgYXV0byoganNNZW1vcnkgPSBKU1dlYkFzc2VtYmx5TWVtb3J5Ojp0cnlDcmVhdGUoZ2xvYmFs
T2JqZWN0LCB2bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseU1lbW9yeVN0cnVjdHVyZSgpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
Ci0gICAgUmVmUHRyPFdhc206Ok1lbW9yeT4gbWVtb3J5ID0gV2FzbTo6TWVtb3J5Ojp0cnlDcmVh
dGUoaW5pdGlhbFBhZ2VDb3VudCwgbWF4aW11bVBhZ2VDb3VudCwKKyAgICBSZWZQdHI8V2FzbTo6
TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OnRyeUNyZWF0ZShpbml0aWFsUGFnZUNvdW50
LCBtYXhpbXVtUGFnZUNvdW50LCBzaGFyaW5nTW9kZSwKICAgICAgICAgWyZ2bV0gKFdhc206Ok1l
bW9yeTo6Tm90aWZ5UHJlc3N1cmUpIHsgdm0uaGVhcC5jb2xsZWN0QXN5bmMoQ29sbGVjdGlvblNj
b3BlOjpGdWxsKTsgfSwKICAgICAgICAgWyZ2bV0gKFdhc206Ok1lbW9yeTo6U3luY1RyeVRvUmVj
bGFpbSkgeyB2bS5oZWFwLmNvbGxlY3RTeW5jKENvbGxlY3Rpb25TY29wZTo6RnVsbCk7IH0sCiAg
ICAgICAgIFsmdm0sIGpzTWVtb3J5XSAoV2FzbTo6TWVtb3J5OjpHcm93U3VjY2VzcywgV2FzbTo6
UGFnZUNvdW50IG9sZFBhZ2VDb3VudCwgV2FzbTo6UGFnZUNvdW50IG5ld1BhZ2VDb3VudCkgeyBq
c01lbW9yeS0+Z3Jvd1N1Y2Nlc3NDYWxsYmFjayh2bSwgb2xkUGFnZUNvdW50LCBuZXdQYWdlQ291
bnQpOyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcAppbmRleCBhYjRhMmJmZWVlZmE2ODQxN2Mz
OGNjMTk1NGU1ZTk3ZjYyZjYwMDliLi43ZTIwOGMzMTAxYzIzNzE2MzIyOWNjNTc5MjdhZWE2Yjhm
MGIyNWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseU1lbW9yeVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCkBAIC05Myw3ICs5Myw3IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0J1ZmZlciwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iCiAKICAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiBtZW1vcnkgPSBn
ZXRNZW1vcnkoZ2xvYmFsT2JqZWN0LCB2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7IAogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKG1lbW9yeS0+YnVmZmVyKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSht
ZW1vcnktPmJ1ZmZlcihnbG9iYWxPYmplY3QpKSk7CiB9CiAKIFdlYkFzc2VtYmx5TWVtb3J5UHJv
dG90eXBlKiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAppbmRleCAz
MWMyMWUzYzQzNzAyYzk5ZmI2ZjgwOTU0ZDBjNWU0NzdkNzBkZjdkLi45ZGQyZTdiZjUyMTg3ZmIz
NDVlZWYwZTdmNGZhMjYzNDViMmVhNDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCkBAIC01NjYsOCAr
NTY2LDkgQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB9OwogCiAgICAgYXV0byBmb3JFYWNoU2VnbWVu
dCA9IFsmXSAoYXV0byBmbikgewotICAgICAgICB1aW50OF90KiBtZW1vcnkgPSByZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QqPihtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmNhY2hlZE1lbW9yeSgpKTsK
LSAgICAgICAgdWludDY0X3Qgc2l6ZUluQnl0ZXMgPSBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmNh
Y2hlZE1lbW9yeVNpemUoKTsKKyAgICAgICAgYXV0byB3YXNtTWVtb3J5ID0gbV9pbnN0YW5jZS0+
aW5zdGFuY2UoKS5tZW1vcnkoKTsKKyAgICAgICAgdWludDhfdCogbWVtb3J5ID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50OF90Kj4od2FzbU1lbW9yeS0+bWVtb3J5KCkpOworICAgICAgICB1aW50NjRf
dCBzaXplSW5CeXRlcyA9IHdhc21NZW1vcnktPnNpemUoKTsKIAogICAgICAgICBmb3IgKGNvbnN0
IFdhc206OlNlZ21lbnQ6OlB0ciYgc2VnbWVudCA6IGRhdGEpIHsKICAgICAgICAgICAgIHVpbnQz
Ml90IG9mZnNldCA9IHNlZ21lbnQtPm9mZnNldC5pc0dsb2JhbEltcG9ydCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcmlhbGl6YXRpb25Db250ZXh0LmNwcAppbmRleCA5YWM4OGViZmQ3Nzc4YmQ3ZDFkMzEyZmM3
NjA4ZjFlYzlhYTExZDM0Li5hNjFjYjA0ZTRkYjk1NTc5NTI1OTQzODcxYWVmYTQ0MzYxNWUzNWM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VyaWFsaXphdGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4dC5jcHAKQEAgLTc5LDcgKzc5LDcg
QEAgdm9pZCBJREJTZXJpYWxpemF0aW9uQ29udGV4dDo6aW5pdGlhbGl6ZVZNKCkKICAgICBBU1NF
UlQoIW1fZ2xvYmFsT2JqZWN0KTsKICAgICBtX3ZtID0gSlNDOjpWTTo6Y3JlYXRlKCk7CiAgICAg
bV92bS0+aGVhcC5hY3F1aXJlQWNjZXNzKCk7Ci0gICAgSlNWTUNsaWVudERhdGE6OmluaXROb3Jt
YWxXb3JsZChtX3ZtLmdldCgpKTsKKyAgICBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxk
KG1fdm0uZ2V0KCksIFdvcmtlclRocmVhZFR5cGU6OldvcmtsZXQpOwogCiAgICAgSlNDOjpKU0xv
Y2tIb2xkZXIgbG9ja2VyKG1fdm0uZ2V0KCkpOwogICAgIG1fZ2xvYmFsT2JqZWN0LnNldCgqbV92
bSwgSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0OjpjcmVhdGUoKm1fdm0sIEpTSURCU2Vy
aWFsaXphdGlvbkdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBKU0M6OmpzTnVs
bCgpKSwgbm9ybWFsV29ybGQoKm1fdm0pKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWZhMDk1ZjlhNTc3NmEzYTQ5MmYzMDFj
ZjI3NjdiODE5MWE1Y2Y1ZS4uMmEzOGMzMGEyZGU1YjMxNDA2ZjgzODZhNGQ4ODJjMmJlNDc5MTY4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNTAwNyw2ICs1MDA3LDcgQEAKIAkJRTM5NjI4QzEyMzk1NzQzMTAwNjU4RUNEIC8q
IE1vdGlvbk1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOTYyOEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xp
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTNBNzc2NjcxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2
OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNBNzc2NjgxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElE
TFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
QTc3NjY2MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExUeXBlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNBRkQ3QUQyNTVGNTBFQjAwRTVF
MzBFIC8qIFdvcmtlclRocmVhZFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzQUZEN0FCMjU1RjUwREMwMEU1RTMwRSAvKiBXb3JrZXJUaHJlYWRU
eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTNCMkYwRUQxRDdGNENBMzAwQjBDOUQxIC8qIExvYWRhYmxlU2NyaXB0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0IyRjBFNzFEN0YzNUVDMDBCMEM5
RDEgLyogTG9hZGFibGVTY3JpcHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFM0IyRjBFRTFEN0Y0Q0E5MDBCMEM5RDEgLyogTG9hZGFibGVTY3Jp
cHRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzQjJGMEU4MUQ3RjM1RUMwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdENsaWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzQjJGMEYwMUQ3
RjRDQjUwMEIwQzlEMSAvKiBMb2FkYWJsZUNsYXNzaWNTY3JpcHQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQjJGMEU0MUQ3RjM1RUMwMEIwQzlEMSAv
KiBMb2FkYWJsZUNsYXNzaWNTY3JpcHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMTYwMjQsNiArMTYwMjUsNyBAQAogCQlFM0E3NzY2NjFEQzg1
RDIyMDBCNjkwRDggLyogRE9NSklUSURMVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBET01KSVRJRExUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
QUU2Q0QxMjI1MkYyNzAwMEM3MEI1MCAvKiBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWxsRGVzY2VuZGFudHNDb2xsZWN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBRkE5NjQxREE2RTkwODAw
Mjg2MUJEIC8qIEpTTm9kZURPTUpJVC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU05vZGVET01KSVQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
M0FGRDdBQjI1NUY1MERDMDBFNUUzMEUgLyogV29ya2VyVGhyZWFkVHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXb3JrZXJUaHJlYWRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
QjJGMEUzMUQ3RjM1RUMwMEIwQzlEMSAvKiBMb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNCMkYwRTQxRDdGMzVFQzAwQjBDOUQx
IC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBMb2FkYWJsZUNsYXNzaWNTY3JpcHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTNCMkYwRTcxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlU2NyaXB0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvYWRhYmxlU2NyaXB0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xODk5Myw2ICsxODk5NSw3IEBACiAJCQkJMkVBNzY4MDMwRkU3MTI2
NDAwQUI5QzhBIC8qIFdvcmtlclNjcmlwdExvYWRlckNsaWVudC5oICovLAogCQkJCTJFNDM0NjQy
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJUaHJlYWQuY3BwICovLAogCQkJCTJFNDM0NjQzMEY1
NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJUaHJlYWQuaCAqLywKKwkJCQlFM0FGRDdBQjI1NUY1MERD
MDBFNUUzMEUgLyogV29ya2VyVGhyZWFkVHlwZS5oICovLAogCQkJCTUxRjE3NEZDMUYzNTg5ODgw
MEM3NDk1MCAvKiBXb3JrZXJUeXBlLmggKi8sCiAJCQkJNTFGMTc0RkExRjM1ODhENzAwQzc0OTUw
IC8qIFdvcmtlclR5cGUuaWRsICovLAogCQkJKTsKQEAgLTM1MTAxLDYgKzM1MTA0LDcgQEAKIAkJ
CQkyRTQzNDY1NTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwQjkwNTZGOTBGMjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhyZWFkYWJsZUxvYWRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQUJEMkQxNEZBMDlENTAwNzQ1N0FFIC8qIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0FGRDdB
RDI1NUY1MEVCMDBFNUUzMEUgLyogV29ya2VyVGhyZWFkVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTU0QTBDNjgxREI4MDdEOTAwMTdBOTBCIC8qIFdvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5l
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGMTc0RkUxRjM1ODk5MjAwQzc0OTUwIC8qIFdvcmtl
clR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCREVBMzIwMjE3RUM1NUYwMDUyREZDRCAvKiBX
b3JrbGV0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL0lETFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCmluZGV4
IDdlODU1OTA1ZjkwOTc5NzdiMzM1ZDM0MDU3NjFkMmFlMTc2Nzc2MWYuLjAyZjU4Y2M2MjNkMWYw
N2YzZDE1ODRkNWZjMmZiZjFjMzg2ZTg3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL0lETFR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMu
aApAQCAtMTUxLDYgKzE1MSwxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMUmVx
dWlyZXNFeGlzdGluZ0F0b21TdHJpbmdBZGFwdG9yIDogSURMU3RyaW5nPEF0bwogICAgIHVzaW5n
IElubmVyVHlwZSA9IFQ7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMQWxs
b3dTaGFyZWRBZGFwdG9yIDogVCB7CisgICAgdXNpbmcgSW5uZXJUeXBlID0gVDsKK307CisKIHN0
cnVjdCBJRExPYmplY3QgOiBJRExUeXBlPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiB7CiAg
ICAgdXNpbmcgTnVsbGFibGVUeXBlID0gSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcAppbmRleCA5Y2U2M2EwYTdmYzZhMWQ2
MjM3NTkwNTg5NTU3NjAwMjI0ODAwODE0Li5kMzViZWQzMGZmNDVkYWJkNmQ2NzMyNGQzNGFiNDdm
YzNmN2NkZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25W
TS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCkBAIC04
OCw3ICs4OCw3IEBAIEpTQzo6Vk0mIGNvbW1vblZNU2xvdygpCiAKICAgICB2bS5zZXRHbG9iYWxD
b25zdFJlZGVjbGFyYXRpb25TaG91bGRUaHJvdyhnbG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91
bGRUaHJvdygpKTsKIAotICAgIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29ybGQoJnZtKTsK
KyAgICBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKCZ2bSwgV29ya2VyVGhyZWFkVHlw
ZTo6TWFpbik7CiAKICAgICByZXR1cm4gdm07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRCdWZmZXJTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydEJ1ZmZlclNvdXJjZS5oCmluZGV4IDg5YTc2YjQ1ZDdk
M2QwZDUyZTUwNGJkNzUwMGU5ODkxNmRmNDhhYjUuLmI2ZTQwODM4MzNkMzdkNDIwYmIxMTBlNzE5
YWVhZjNhNDIwNzNjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ29udmVydEJ1ZmZlclNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQ29udmVydEJ1ZmZlclNvdXJjZS5oCkBAIC0xMDksNyArMTA5LDggQEAgaW5saW5lIFJl
ZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gdG9VbnNoYXJlZEFycmF5QnVmZmVyVmlldyhKU0M6
OlZNJiB2bSwgSlNDOjoKIAogbmFtZXNwYWNlIERldGFpbCB7CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IEJ1ZmZlclNvdXJjZVR5cGU+CitlbnVtIGNsYXNzIEJ1ZmZlclNvdXJjZUNvbnZlcnRlckFsbG93
U2hhcmVkTW9kZSB7IEFsbG93LCBEaXNhbGxvdyB9OwordGVtcGxhdGU8dHlwZW5hbWUgQnVmZmVy
U291cmNlVHlwZSwgQnVmZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlIG1vZGU+CiBz
dHJ1Y3QgQnVmZmVyU291cmNlQ29udmVydGVyIHsKICAgICB1c2luZyBXcmFwcGVyVHlwZSA9IHR5
cGVuYW1lIENvbnZlcnRlcjxCdWZmZXJTb3VyY2VUeXBlPjo6V3JhcHBlclR5cGU7CiAgICAgdXNp
bmcgUmV0dXJuVHlwZSA9IHR5cGVuYW1lIENvbnZlcnRlcjxCdWZmZXJTb3VyY2VUeXBlPjo6UmV0
dXJuVHlwZTsKQEAgLTExOSw3ICsxMjAsMTEgQEAgc3RydWN0IEJ1ZmZlclNvdXJjZUNvbnZlcnRl
ciB7CiAgICAgewogICAgICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgICAgIFJldHVyblR5cGUgb2JqZWN0ID0gV3JhcHBlclR5cGU6OnRvV3JhcHBlZCh2bSwgdmFs
dWUpOworICAgICAgICBSZXR1cm5UeXBlIG9iamVjdCB7IH07CisgICAgICAgIGlmIGNvbnN0ZXhw
ciAobW9kZSA9PSBCdWZmZXJTb3VyY2VDb252ZXJ0ZXJBbGxvd1NoYXJlZE1vZGU6OkFsbG93KQor
ICAgICAgICAgICAgb2JqZWN0ID0gV3JhcHBlclR5cGU6OnRvV3JhcHBlZEFsbG93U2hhcmVkKHZt
LCB2YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG9iamVjdCA9IFdyYXBwZXJUeXBl
Ojp0b1dyYXBwZWQodm0sIHZhbHVlKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFvYmplY3QpKQog
ICAgICAgICAgICAgZXhjZXB0aW9uVGhyb3dlcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSk7
CiAgICAgICAgIHJldHVybiBvYmplY3Q7CkBAIC0xMzUsNyArMTQwLDcgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgQ29udmVydGVyPElETEFycmF5QnVmZmVyPiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMQXJy
YXlCdWZmZXI+IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJvd2VyID0gRGVm
YXVsdEV4Y2VwdGlvblRocm93ZXI+CiAgICAgc3RhdGljIFJldHVyblR5cGUgY29udmVydChKU0M6
OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUs
IEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigp
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPElE
TEFycmF5QnVmZmVyPjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpm
b3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKKyAgICAgICAgcmV0
dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPElETEFycmF5QnVmZmVyLCBEZXRhaWw6
OkJ1ZmZlclNvdXJjZUNvbnZlcnRlckFsbG93U2hhcmVkTW9kZTo6RGlzYWxsb3c+Ojpjb252ZXJ0
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dl
cj4oZXhjZXB0aW9uVGhyb3dlcikpOwogICAgIH0KIH07CiAKQEAgLTE1Nyw3ICsxNjIsNyBAQCB0
ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURMRGF0YVZpZXc+IDogRGVmYXVsdENvbnZlcnRl
cjxJRExEYXRhVmlldz4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlvblRocm93ZXIg
PSBEZWZhdWx0RXhjZXB0aW9uVGhyb3dlcj4KICAgICBzdGF0aWMgUmV0dXJuVHlwZSBjb252ZXJ0
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2
YWx1ZSwgRXhjZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIgPSBFeGNlcHRpb25UaHJv
d2VyKCkpCiAgICAgewotICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0
ZXI8SURMRGF0YVZpZXc+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6
OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOworICAgICAgICBy
ZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMRGF0YVZpZXcsIERldGFpbDo6
QnVmZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlOjpEaXNhbGxvdz46OmNvbnZlcnQo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2Vy
PihleGNlcHRpb25UaHJvd2VyKSk7CiAgICAgfQogfTsKIApAQCAtMTc5LDcgKzE4NCw3IEBAIHRl
bXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExJbnQ4QXJyYXk+IDogRGVmYXVsdENvbnZlcnRl
cjxJRExJbnQ4QXJyYXk+IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJvd2Vy
ID0gRGVmYXVsdEV4Y2VwdGlvblRocm93ZXI+CiAgICAgc3RhdGljIFJldHVyblR5cGUgY29udmVy
dChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
dmFsdWUsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhy
b3dlcigpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVy
dGVyPElETEludDhBcnJheT46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0
ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7CisgICAgICAg
IHJldHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExJbnQ4QXJyYXksIERldGFp
bDo6QnVmZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlOjpEaXNhbGxvdz46OmNvbnZl
cnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJv
d2VyPihleGNlcHRpb25UaHJvd2VyKSk7CiAgICAgfQogfTsKIApAQCAtMjAxLDcgKzIwNiw3IEBA
IHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExJbnQxNkFycmF5PiA6IERlZmF1bHRDb252
ZXJ0ZXI8SURMSW50MTZBcnJheT4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlvblRo
cm93ZXIgPSBEZWZhdWx0RXhjZXB0aW9uVGhyb3dlcj4KICAgICBzdGF0aWMgUmV0dXJuVHlwZSBj
b252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSB2YWx1ZSwgRXhjZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIgPSBFeGNlcHRp
b25UaHJvd2VyKCkpCiAgICAgewotICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VD
b252ZXJ0ZXI8SURMSW50MTZBcnJheT46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7Cisg
ICAgICAgIHJldHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExJbnQxNkFycmF5
LCBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlckFsbG93U2hhcmVkTW9kZTo6RGlzYWxsb3c+
Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0
aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOwogICAgIH0KIH07CiAKQEAgLTIyMyw3ICsy
MjgsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURMSW50MzJBcnJheT4gOiBEZWZh
dWx0Q29udmVydGVyPElETEludDMyQXJyYXk+IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNl
cHRpb25UaHJvd2VyID0gRGVmYXVsdEV4Y2VwdGlvblRocm93ZXI+CiAgICAgc3RhdGljIFJldHVy
blR5cGUgY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgdmFsdWUsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0g
RXhjZXB0aW9uVGhyb3dlcigpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVy
U291cmNlQ29udmVydGVyPElETEludDMyQXJyYXk+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dl
cikpOworICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMSW50
MzJBcnJheSwgRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXJBbGxvd1NoYXJlZE1vZGU6OkRp
c2FsbG93Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJk
PEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKICAgICB9CiB9OwogCkBAIC0y
NDUsNyArMjUwLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETFVpbnQ4QXJyYXk+
IDogRGVmYXVsdENvbnZlcnRlcjxJRExVaW50OEFycmF5PiB7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgogICAgIHN0YXRp
YyBSZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0aW9uVGhy
b3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBEZXRhaWw6
OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExVaW50OEFycmF5Pjo6Y29udmVydChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlv
blRocm93ZXIpKTsKKyAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVy
PElETFVpbnQ4QXJyYXksIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRN
b2RlOjpEaXNhbGxvdz46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6
Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7CiAgICAgfQogfTsK
IApAQCAtMjczLDcgKzI3OCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExVaW50
MTZBcnJheT4gOiBEZWZhdWx0Q29udmVydGVyPElETFVpbnQxNkFycmF5PiB7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgog
ICAgIHN0YXRpYyBSZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhj
ZXB0aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExVaW50MTZBcnJheT46OmNvbnZlcnQo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2Vy
PihleGNlcHRpb25UaHJvd2VyKSk7CisgICAgICAgIHJldHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJj
ZUNvbnZlcnRlcjxJRExVaW50MTZBcnJheSwgRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXJB
bGxvd1NoYXJlZE1vZGU6OkRpc2FsbG93Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsK
ICAgICB9CiB9OwogCkBAIC0yOTUsNyArMzAwLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVy
dGVyPElETFVpbnQzMkFycmF5PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMVWludDMyQXJyYXk+IHsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJvd2VyID0gRGVmYXVsdEV4Y2VwdGlv
blRocm93ZXI+CiAgICAgc3RhdGljIFJldHVyblR5cGUgY29udmVydChKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIEV4Y2VwdGlvblRo
cm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigpKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPElETFVpbnQzMkFycmF5
Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2Vw
dGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKKyAgICAgICAgcmV0dXJuIERldGFpbDo6
QnVmZmVyU291cmNlQ29udmVydGVyPElETFVpbnQzMkFycmF5LCBEZXRhaWw6OkJ1ZmZlclNvdXJj
ZUNvbnZlcnRlckFsbG93U2hhcmVkTW9kZTo6RGlzYWxsb3c+Ojpjb252ZXJ0KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9u
VGhyb3dlcikpOwogICAgIH0KIH07CiAKQEAgLTMxNyw3ICszMjIsNyBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBDb252ZXJ0ZXI8SURMVWludDhDbGFtcGVkQXJyYXk+IDogRGVmYXVsdENvbnZlcnRlcjxJ
RExVaW50OENsYQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlvblRocm93ZXIgPSBEZWZh
dWx0RXhjZXB0aW9uVGhyb3dlcj4KICAgICBzdGF0aWMgUmV0dXJuVHlwZSBjb252ZXJ0KEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwg
RXhjZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkp
CiAgICAgewotICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURM
VWludDhDbGFtcGVkQXJyYXk+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBz
dGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOworICAgICAg
ICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMVWludDhDbGFtcGVkQXJy
YXksIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlOjpEaXNhbGxv
dz46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNl
cHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7CiAgICAgfQogfTsKIApAQCAtMzM5LDcg
KzM0NCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExGbG9hdDMyQXJyYXk+IDog
RGVmYXVsdENvbnZlcnRlcjxJRExGbG9hdDMyQXJyYXk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgogICAgIHN0YXRpYyBS
ZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0aW9uVGhyb3dl
ciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBEZXRhaWw6OkJ1
ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExGbG9hdDMyQXJyYXk+Ojpjb252ZXJ0KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9u
VGhyb3dlcikpOworICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8
SURMRmxvYXQzMkFycmF5LCBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlckFsbG93U2hhcmVk
TW9kZTo6RGlzYWxsb3c+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6
OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOwogICAgIH0KIH07
CiAKQEAgLTM2MSw3ICszNjYsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURMRmxv
YXQ2NEFycmF5PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMRmxvYXQ2NEFycmF5PgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEV4Y2VwdGlvblRocm93ZXIgPSBEZWZhdWx0RXhjZXB0aW9uVGhyb3dlcj4K
ICAgICBzdGF0aWMgUmV0dXJuVHlwZSBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9uVGhyb3dlciYmIGV4
Y2VwdGlvblRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkpCiAgICAgewotICAgICAgICByZXR1
cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMRmxvYXQ2NEFycmF5Pjo6Y29udmVy
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93
ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKKyAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291
cmNlQ29udmVydGVyPElETEZsb2F0NjRBcnJheSwgRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0
ZXJBbGxvd1NoYXJlZE1vZGU6OkRpc2FsbG93Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIp
KTsKICAgICB9CiB9OwogCkBAIC0zODMsNyArMzg4LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29u
dmVydGVyPElETEFycmF5QnVmZmVyVmlldz4gOiBEZWZhdWx0Q29udmVydGVyPElETEFycmF5QnVm
ZmUKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJvd2VyID0gRGVmYXVsdEV4Y2Vw
dGlvblRocm93ZXI+CiAgICAgc3RhdGljIFJldHVyblR5cGUgY29udmVydChKU0M6OkpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIEV4Y2VwdGlv
blRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigpKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPElETEFycmF5QnVm
ZmVyVmlldz46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2Fy
ZDxFeGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7CisgICAgICAgIHJldHVybiBE
ZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExBcnJheUJ1ZmZlclZpZXcsIERldGFpbDo6
QnVmZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlOjpEaXNhbGxvdz46OmNvbnZlcnQo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2Vy
PihleGNlcHRpb25UaHJvd2VyKSk7CiAgICAgfQogfTsKIApAQCAtMzk4LDQgKzQwMywxNyBAQCB0
ZW1wbGF0ZTw+IHN0cnVjdCBKU0NvbnZlcnRlcjxJRExBcnJheUJ1ZmZlclZpZXc+IHsKICAgICB9
CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IENvbnZlcnRlcjxJRExBbGxvd1No
YXJlZEFkYXB0b3I8VD4+IDogRGVmYXVsdENvbnZlcnRlcjxUPiB7CisgICAgdXNpbmcgQ29udmVy
dGVyVHlwZSA9IENvbnZlcnRlcjxUPjsKKyAgICB1c2luZyBXcmFwcGVyVHlwZSA9IHR5cGVuYW1l
IENvbnZlcnRlclR5cGU6OldyYXBwZXJUeXBlOworICAgIHVzaW5nIFJldHVyblR5cGUgPSB0eXBl
bmFtZSBDb252ZXJ0ZXJUeXBlOjpSZXR1cm5UeXBlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgorICAgIHN0YXRpYyBS
ZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0aW9uVGhyb3dl
ciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBEZXRhaWw6OkJ1
ZmZlclNvdXJjZUNvbnZlcnRlcjxULCBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlckFsbG93
U2hhcmVkTW9kZTo6QWxsb3c+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBz
dGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOworICAgIH0K
K307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFVuaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRVbmlvbi5oCmluZGV4IDFmODI0MzNmOTJjNzFhMTFhYmU3Nzg2OTkx
NDM2YjdiODNkNTViNGIuLjIxNjcwZmNiODc0YjM4N2I1OTA4YzY4NmJhZWUxZDExMTVkNmI1MWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFVuaW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VW5pb24uaApA
QCAtNDA1LDQgKzQwNSwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPiBzdHJ1Y3QgSlNDb252
ZXJ0ZXI8SURMVW5pb248VC4uLj4+IHsKICAgICB9CiB9OwogCisvLyBCdWZmZXJTb3VyY2Ugc3Bl
Y2lhbGl6YXRpb24uIEluIFdlYktpdCwgQnVmZmVyU291cmNlIGlzIGRlZmluZWQgYXMgSURMVW5p
b248SURMQXJyYXlCdWZmZXJWaWV3LCBJRExBcnJheUJ1ZmZlcj4gYXMgYSBoYWNrLCBhbmQgaXQg
aXMgbm90IGNvbXBhdGlibGUgdG8KKy8vIGFubm90YXRpb24gZGVzY3JpYmVkIGluIFdlYklETC4K
K3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExBbGxvd1NoYXJlZEFkYXB0b3I8SURMVW5p
b248SURMQXJyYXlCdWZmZXJWaWV3LCBJRExBcnJheUJ1ZmZlcj4+PiA6IERlZmF1bHRDb252ZXJ0
ZXI8SURMVW5pb248SURMQXJyYXlCdWZmZXJWaWV3LCBJRExBcnJheUJ1ZmZlcj4+IHsKKyAgICBz
dGF0aWMgYXV0byBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkgLT4gZGVjbHR5cGUoYXV0bykKKyAgICB7CisgICAgICAg
IHJldHVybiBDb252ZXJ0ZXI8SURMVW5pb248SURMQWxsb3dTaGFyZWRBZGFwdG9yPElETEFycmF5
QnVmZmVyVmlldz4sIElETEFsbG93U2hhcmVkQWRhcHRvcjxJRExBcnJheUJ1ZmZlcj4+Pjo6Y29u
dmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgfQorfTsKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggMmQ5OWJlNjQxM2MzMGMxNDA4ZjUzNmJjMThhMjFl
Yzg0MWE5Nzc2My4uZDhjY2Y0Y2M2YjJmZWVmYzJmNGQwNzM0ZGZiMWJkNTQ0ZjE3OWVjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCkBAIC03NSw2ICs3NSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTZXQu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1NldEl0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNUeXBlZEFycmF5cy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTV2ViQXNzZW1ibHlNZW1vcnkuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1dlYkFz
c2VtYmx5TW9kdWxlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0
b3IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgpAQCAt
MTgyLDYgKzE4Myw5IEBAIGVudW0gU2VyaWFsaXphdGlvblRhZyB7CiAjZW5kaWYKICAgICBCaWdJ
bnRUYWcgPSA0NywKICAgICBCaWdJbnRPYmplY3RUYWcgPSA0OCwKKyNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCisgICAgV2FzbU1lbW9yeVRhZyA9IDQ5LAorI2VuZGlmCiAgICAgRXJyb3JUYWcgPSAy
NTUKIH07CiAKQEAgLTM1Nyw3ICszNjEsNiBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RyaW5n
RGF0YUlzOEJpdEZsYWcgPSAweDgwMDAwMDAwOwogICogICAgfCBNZXNzYWdlUG9ydFJlZmVyZW5j
ZVRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAgICB8IEFycmF5QnVmZmVyCiAgKiAgICB8IEFycmF5
QnVmZmVyVmlld1RhZyBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgPGJ5dGVPZmZzZXQ6dWludDMyX3Q+
IDxieXRlTGVuZ3RoOnVpbnQzMl90PiAoQXJyYXlCdWZmZXIgfCBPYmplY3RSZWZlcmVuY2UpCi0g
KiAgICB8IEFycmF5QnVmZmVyVHJhbnNmZXJUYWcgPHZhbHVlOnVpbnQzMl90PgogICogICAgfCBD
cnlwdG9LZXlUYWcgPHdyYXBwZWRLZXlMZW5ndGg6dWludDMyX3Q+IDxmYWN0b3I6Ynl0ZXt3cmFw
cGVkS2V5TGVuZ3RofT4KICAqICAgIHwgRE9NUG9pbnQKICAqICAgIHwgRE9NUmVjdApAQCAtMzY3
LDYgKzM3MCw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJpbmdEYXRhSXM4Qml0RmxhZyA9
IDB4ODAwMDAwMDA7CiAgKiAgICB8IFJUQ0NlcnRpZmljYXRlVGFnCiAgKiAgICB8IEltYWdlQml0
bWFwVGFnIDxvcmlnaW5DbGVhbjp1aW50OF90PiA8bG9naWNhbFdpZHRoOmludDMyX3Q+IDxsb2dp
Y2FsSGVpZ2h0OmludDMyX3Q+IDxyZXNvbHV0aW9uU2NhbGU6ZG91YmxlPiA8Ynl0ZUxlbmd0aDp1
aW50MzJfdD4oPGltYWdlQnl0ZURhdGE6dWludDhfdD4pCiAgKiAgICB8IE9mZnNjcmVlbkNhbnZh
c1RyYW5zZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KKyAqICAgIHwgV2FzbU1lbW9yeVRhZyA8dmFs
dWU6dWludDMyX3Q+CiAgKgogICogSW5zaWRlIGNlcnRpZmljYXRlLCBkYXRhIGlzIHNlcmlhbGl6
ZWQgaW4gdGhpcyBmb3JtYXQgYXMgcGVyIHNwZWM6CiAgKgpAQCAtNDE5LDYgKzQyMyw4IEBAIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJpbmdEYXRhSXM4Qml0RmxhZyA9IDB4ODAwMDAwMDA7CiAg
KgogICogQXJyYXlCdWZmZXIgOi0KICAqICAgIEFycmF5QnVmZmVyVGFnIDxsZW5ndGg6dWludDMy
X3Q+IDxjb250ZW50czpieXRle2xlbmd0aH0+CisgKiAgICBBcnJheUJ1ZmZlclRyYW5zZmVyVGFn
IDx2YWx1ZTp1aW50MzJfdD4KKyAqICAgIFNoYXJlZEFycmF5QnVmZmVyVGFnIDx2YWx1ZTp1aW50
MzJfdD4KICAqCiAgKiBDcnlwdG9LZXlITUFDIDotCiAgKiAgICA8a2V5U2l6ZTp1aW50MzJfdD4g
PGtleURhdGE6Ynl0ZXtrZXlTaXplfT4gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZyAvLyBB
bGdvcml0aG0gdGFnIGlubmVyIGhhc2ggZnVuY3Rpb24uCkBAIC01NzYsNiArNTgyLDcgQEAgY2xh
c3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKICAgICAgICAgICAgIFdhc21Nb2R1bGVBcnJheSYgd2FzbU1vZHVsZXMsCisgICAg
ICAgICAgICBXYXNtTWVtb3J5SGFuZGxlQXJyYXkmIHdhc21NZW1vcnlIYW5kbGVzLAogI2VuZGlm
CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgVmVjdG9yPHVpbnQ4X3Q+JiBvdXQs
IFNlcmlhbGl6YXRpb25Db250ZXh0IGNvbnRleHQsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSYg
c2hhcmVkQnVmZmVycykKICAgICB7CkBAIC01ODUsNiArNTkyLDcgQEAgY2xhc3MgQ2xvbmVTZXJp
YWxpemVyIDogQ2xvbmVCYXNlIHsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAg
ICAgICAgICAgIHdhc21Nb2R1bGVzLAorICAgICAgICAgICAgd2FzbU1lbW9yeUhhbmRsZXMsCiAj
ZW5kaWYKICAgICAgICAgICAgIGJsb2JVUkxzLCBvdXQsIGNvbnRleHQsIHNoYXJlZEJ1ZmZlcnMp
OwogICAgICAgICByZXR1cm4gc2VyaWFsaXplci5zZXJpYWxpemUodmFsdWUpOwpAQCAtNjE1LDYg
KzYyMyw3IEBAIGNsYXNzIENsb25lU2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICBXYXNtTW9kdWxlQXJyYXkmIHdhc21N
b2R1bGVzLAorICAgICAgICAgICAgV2FzbU1lbW9yeUhhbmRsZUFycmF5JiB3YXNtTWVtb3J5SGFu
ZGxlcywKICNlbmRpZgogICAgICAgICBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIFZlY3Rvcjx1
aW50OF90PiYgb3V0LCBTZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0LCBBcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXkmIHNoYXJlZEJ1ZmZlcnMpCiAgICAgICAgIDogQ2xvbmVCYXNlKGxleGljYWxH
bG9iYWxPYmplY3QpCkBAIC02MjUsNiArNjM0LDcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDog
Q2xvbmVCYXNlIHsKICAgICAgICAgLCBtX3NoYXJlZEJ1ZmZlcnMoc2hhcmVkQnVmZmVycykKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgbV93YXNtTW9kdWxlcyh3YXNtTW9kdWxl
cykKKyAgICAgICAgLCBtX3dhc21NZW1vcnlIYW5kbGVzKHdhc21NZW1vcnlIYW5kbGVzKQogI2Vu
ZGlmCiAgICAgewogICAgICAgICB3cml0ZShDdXJyZW50VmVyc2lvbik7CkBAIC0xMjMwLDYgKzEy
NDAsNyBAQCBjbGFzcyBDbG9uZVNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAgICAgICAgICAg
ICAgIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IGR1bW15QXJyYXlCdWZmZXJzOwog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgICAgICAgICBXYXNtTW9kdWxlQXJyYXkg
ZHVtbXlNb2R1bGVzOworICAgICAgICAgICAgICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSBkdW1t
eU1lbW9yeUhhbmRsZXM7CiAjZW5kaWYKICAgICAgICAgICAgICAgICBBcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXkgZHVtbXlTaGFyZWRCdWZmZXJzOwogICAgICAgICAgICAgICAgIENsb25lU2VyaWFs
aXplciByYXdLZXlTZXJpYWxpemVyKG1fbGV4aWNhbEdsb2JhbE9iamVjdCwgZHVtbXlNZXNzYWdl
UG9ydHMsIGR1bW15QXJyYXlCdWZmZXJzLCB7IH0sCkBAIC0xMjM4LDYgKzEyNDksNyBAQCBjbGFz
cyBDbG9uZVNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQogICAgICAgICAgICAgICAgICAgICBkdW1teU1vZHVsZXMsCisgICAgICAgICAgICAg
ICAgICAgIGR1bW15TWVtb3J5SGFuZGxlcywKICNlbmRpZgogICAgICAgICAgICAgICAgICAgICBk
dW1teUJsb2JVUkxzLCBzZXJpYWxpemVkS2V5LCBTZXJpYWxpemF0aW9uQ29udGV4dDo6RGVmYXVs
dCwgZHVtbXlTaGFyZWRCdWZmZXJzKTsKICAgICAgICAgICAgICAgICByYXdLZXlTZXJpYWxpemVy
LndyaXRlKGtleSk7CkBAIC0xMjc0LDYgKzEyODYsMTcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVy
IDogQ2xvbmVCYXNlIHsKICAgICAgICAgICAgICAgICB3cml0ZShpbmRleCk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoSlNXZWJB
c3NlbWJseU1lbW9yeSogbWVtb3J5ID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TWVtb3J5
Kj4odm0sIG9iaikpIHsKKyAgICAgICAgICAgICAgICBpZiAobWVtb3J5LT5tZW1vcnkoKS5zaGFy
aW5nTW9kZSgpICE9IEpTQzo6V2FzbTo6TWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZCkgeworICAg
ICAgICAgICAgICAgICAgICBjb2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkRhdGFDbG9u
ZUVycm9yOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgdWludDMyX3QgaW5kZXggPSBtX3dhc21NZW1vcnlIYW5kbGVz
LnNpemUoKTsKKyAgICAgICAgICAgICAgICBtX3dhc21NZW1vcnlIYW5kbGVzLmFwcGVuZChtYWtl
UmVmKG1lbW9yeS0+bWVtb3J5KCkuaGFuZGxlKCkpKTsKKyAgICAgICAgICAgICAgICB3cml0ZShX
YXNtTWVtb3J5VGFnKTsKKyAgICAgICAgICAgICAgICB3cml0ZShpbmRleCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgICAgIGlm
IChvYmotPmluaGVyaXRzPEpTRE9NUG9pbnRSZWFkT25seT4odm0pKSB7CiAgICAgICAgICAgICAg
ICAgZHVtcERPTVBvaW50KG9iaik7CkBAIC0xNjU4LDYgKzE2ODEsNyBAQCBjbGFzcyBDbG9uZVNl
cmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAgIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSYgbV9z
aGFyZWRCdWZmZXJzOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBXYXNtTW9kdWxlQXJy
YXkmIG1fd2FzbU1vZHVsZXM7CisgICAgV2FzbU1lbW9yeUhhbmRsZUFycmF5JiBtX3dhc21NZW1v
cnlIYW5kbGVzOwogI2VuZGlmCiB9OwogCkBAIC0xOTM3LDYgKzE5NjEsNyBAQCBjbGFzcyBDbG9u
ZURlc2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAgICAgICAgICwgQXJyYXlCdWZmZXJDb250ZW50
c0FycmF5KiBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
YnVmZmVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+IGJsb2JGaWxlUGF0aHMsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogc2hhcmVkQnVmZmVy
cwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBXYXNtTW9kdWxlQXJyYXkqIHdh
c21Nb2R1bGVzCisgICAgICAgICwgV2FzbU1lbW9yeUhhbmRsZUFycmF5KiB3YXNtTWVtb3J5SGFu
ZGxlcwogI2VuZGlmCiAgICAgICAgICkKICAgICB7CkBAIC0xOTQ4LDYgKzE5NzMsNyBAQCBjbGFz
cyBDbG9uZURlc2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCiAgICAgICAgICAgICAsIHdhc21Nb2R1bGVzCisgICAgICAgICAgICAsIHdhc21N
ZW1vcnlIYW5kbGVzCiAjZW5kaWYKICAgICAgICAgICAgICk7CiAgICAgICAgIGlmICghZGVzZXJp
YWxpemVyLmlzVmFsaWQoKSkKQEAgLTIwMDEsNiArMjAyNyw3IEBAIGNsYXNzIENsb25lRGVzZXJp
YWxpemVyIDogQ2xvbmVCYXNlIHsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAg
ICAgICAgLCBXYXNtTW9kdWxlQXJyYXkqIHdhc21Nb2R1bGVzID0gbnVsbHB0cgorICAgICAgICAs
IFdhc21NZW1vcnlIYW5kbGVBcnJheSogd2FzbU1lbW9yeUhhbmRsZXMgPSBudWxscHRyCiAjZW5k
aWYKICAgICAgICAgKQogICAgICAgICA6IENsb25lQmFzZShsZXhpY2FsR2xvYmFsT2JqZWN0KQpA
QCAtMjAyMSw2ICsyMDQ4LDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2Ug
ewogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAsIG1fd2FzbU1vZHVs
ZXMod2FzbU1vZHVsZXMpCisgICAgICAgICwgbV93YXNtTWVtb3J5SGFuZGxlcyh3YXNtTWVtb3J5
SGFuZGxlcykKICNlbmRpZgogICAgIHsKICAgICAgICAgaWYgKCFyZWFkKG1fdmVyc2lvbikpCkBA
IC0yMDMzLDYgKzIwNjEsNyBAQCBjbGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENsb25lQmFzZSB7
CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgV2FzbU1vZHVsZUFy
cmF5KiB3YXNtTW9kdWxlcworICAgICAgICAsIFdhc21NZW1vcnlIYW5kbGVBcnJheSogd2FzbU1l
bW9yeUhhbmRsZXMKICNlbmRpZgogICAgICAgICApCiAgICAgICAgIDogQ2xvbmVCYXNlKGxleGlj
YWxHbG9iYWxPYmplY3QpCkBAIC0yMDU2LDYgKzIwODUsNyBAQCBjbGFzcyBDbG9uZURlc2VyaWFs
aXplciA6IENsb25lQmFzZSB7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAg
ICAgICwgbV93YXNtTW9kdWxlcyh3YXNtTW9kdWxlcykKKyAgICAgICAgLCBtX3dhc21NZW1vcnlI
YW5kbGVzKHdhc21NZW1vcnlIYW5kbGVzKQogI2VuZGlmCiAgICAgewogICAgICAgICBpZiAoIXJl
YWQobV92ZXJzaW9uKSkKQEAgLTMyOTksNiArMzMyOSwzMyBAQCBjbGFzcyBDbG9uZURlc2VyaWFs
aXplciA6IENsb25lQmFzZSB7CiAgICAgICAgICAgICBtX2djQnVmZmVyLmFwcGVuZFdpdGhDcmFz
aE9uT3ZlcmZsb3cocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
IH0KKyAgICAgICAgY2FzZSBXYXNtTWVtb3J5VGFnOiB7CisgICAgICAgICAgICB1aW50MzJfdCBp
bmRleDsKKyAgICAgICAgICAgIGJvb2wgaW5kZXhTdWNjZXNzZnVsbHlSZWFkID0gcmVhZChpbmRl
eCk7CisgICAgICAgICAgICBpZiAoIWluZGV4U3VjY2Vzc2Z1bGx5UmVhZCB8fCAhbV93YXNtTWVt
b3J5SGFuZGxlcyB8fCBpbmRleCA+PSBtX3dhc21NZW1vcnlIYW5kbGVzLT5zaXplKCkpIHsKKyAg
ICAgICAgICAgICAgICBmYWlsKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJlZlB0cjxXYXNtOjpNZW1vcnlIYW5kbGU+IGhh
bmRsZSA9IG1fd2FzbU1lbW9yeUhhbmRsZXMtPmF0KGluZGV4KTsKKyAgICAgICAgICAgIGlmICgh
aGFuZGxlKSB7CisgICAgICAgICAgICAgICAgZmFpbCgpOworICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhdXRvJiB2bSA9IG1fbGV4
aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkqIHJlc3Vs
dCA9IEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6dHJ5Q3JlYXRlKG1fbGV4aWNhbEdsb2JhbE9i
amVjdCwgdm0sIG1fZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseU1lbW9yeVN0cnVjdHVyZSgpKTsK
KyAgICAgICAgICAgIC8vIFNpbmNlIHdlIGFyZSBjbG9uaW5nIGEgSlNXZWJBc3NlbWJseU1lbW9y
eSwgaXQncyBpbXBvc3NpYmxlIGZvciB0aGF0CisgICAgICAgICAgICAvLyBtb2R1bGUgdG8gbm90
IGhhdmUgYmVlbiBhIHZhbGlkIG1vZHVsZS4gVGhlcmVmb3JlLCBjcmVhdGVTdHViIHNob3VsZAor
ICAgICAgICAgICAgLy8gbm90IHRyb3cuCisgICAgICAgICAgICBzY29wZS5yZWxlYXNlQXNzZXJ0
Tm9FeGNlcHRpb24oKTsKKyAgICAgICAgICAgIFJlZjxXYXNtOjpNZW1vcnk+IG1lbW9yeSA9IFdh
c206Ok1lbW9yeTo6Y3JlYXRlKGhhbmRsZS5yZWxlYXNlTm9uTnVsbCgpLAorICAgICAgICAgICAg
ICAgIFsmdm1dIChXYXNtOjpNZW1vcnk6Ok5vdGlmeVByZXNzdXJlKSB7IHZtLmhlYXAuY29sbGVj
dEFzeW5jKENvbGxlY3Rpb25TY29wZTo6RnVsbCk7IH0sCisgICAgICAgICAgICAgICAgWyZ2bV0g
KFdhc206Ok1lbW9yeTo6U3luY1RyeVRvUmVjbGFpbSkgeyB2bS5oZWFwLmNvbGxlY3RTeW5jKENv
bGxlY3Rpb25TY29wZTo6RnVsbCk7IH0sCisgICAgICAgICAgICAgICAgWyZ2bSwgcmVzdWx0XSAo
V2FzbTo6TWVtb3J5OjpHcm93U3VjY2VzcywgV2FzbTo6UGFnZUNvdW50IG9sZFBhZ2VDb3VudCwg
V2FzbTo6UGFnZUNvdW50IG5ld1BhZ2VDb3VudCkgeyByZXN1bHQtPmdyb3dTdWNjZXNzQ2FsbGJh
Y2sodm0sIG9sZFBhZ2VDb3VudCwgbmV3UGFnZUNvdW50KTsgfSk7CisgICAgICAgICAgICByZXN1
bHQtPmFkb3B0KFdURk1vdmUobWVtb3J5KSk7CisgICAgICAgICAgICBtX2djQnVmZmVyLmFwcGVu
ZFdpdGhDcmFzaE9uT3ZlcmZsb3cocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIH0KICNlbmRpZgogICAgICAgICBjYXNlIEFycmF5QnVmZmVyVGFnOiB7CiAgICAg
ICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyOwpAQCAtMzQzOSw2ICszNDk2
LDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogI2VuZGlmCiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdhc21Nb2R1bGVBcnJheSogbV93YXNtTW9kdWxlczsK
KyAgICBXYXNtTWVtb3J5SGFuZGxlQXJyYXkqIG1fd2FzbU1lbW9yeUhhbmRsZXM7CiAjZW5kaWYK
IAogICAgIFN0cmluZyBibG9iRmlsZVBhdGhGb3JCbG9iVVJMKGNvbnN0IFN0cmluZyYgYmxvYlVS
TCkKQEAgLTM2NjEsNiArMzcxOSw3IEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgY29uc3QgVmVjCiAjZW5kaWYK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgc3RkOjp1bmlxdWVfcHRyPFdhc21N
b2R1bGVBcnJheT4gd2FzbU1vZHVsZXNBcnJheQorICAgICAgICAsIHN0ZDo6dW5pcXVlX3B0cjxX
YXNtTWVtb3J5SGFuZGxlQXJyYXk+IHdhc21NZW1vcnlIYW5kbGVzQXJyYXkKICNlbmRpZgogICAg
ICAgICApCiAgICAgOiBtX2RhdGEoV1RGTW92ZShidWZmZXIpKQpAQCAtMzY3Miw2ICszNzMxLDcg
QEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVp
bnQ4X3Q+JiYgYnVmZmVyLCBjb25zdCBWZWMKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKICAgICAsIG1fd2FzbU1vZHVsZXNBcnJheShXVEZNb3ZlKHdhc21Nb2R1bGVzQXJyYXkpKQor
ICAgICwgbV93YXNtTWVtb3J5SGFuZGxlc0FycmF5KFdURk1vdmUod2FzbU1lbW9yeUhhbmRsZXNB
cnJheSkpCiAjZW5kaWYKIHsKICAgICAvLyBTaW5jZSB0aGlzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSBpcyBtZWFudCB0byBiZSBwYXNzZWQgYmV0d2VlbiB0aHJlYWRzLCBpdHMgU3RyaW5nIGRhdGEg
bWVtYmVycwpAQCAtMzcxMCw2ICszNzcwLDEwIEBAIHNpemVfdCBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNvbXB1dGVNZW1vcnlDb3N0KCkgY29uc3QKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICAgICAvLyBXZSBhcmUgbm90IHN1cHBvcnRpbmcgV2ViQXNzZW1ibHkgTW9kdWxlIG1lbW9yeSBl
c3RpbWF0aW9uIHlldC4KKyAgICBpZiAobV93YXNtTWVtb3J5SGFuZGxlc0FycmF5KSB7CisgICAg
ICAgIGZvciAoYXV0byYgY29udGVudCA6ICptX3dhc21NZW1vcnlIYW5kbGVzQXJyYXkpCisgICAg
ICAgICAgICBjb3N0ICs9IGNvbnRlbnQtPnNpemUoKTsKKyAgICB9CiAjZW5kaWYKIAogICAgIGZv
ciAoYXV0byYgdXJscyA6IG1fYmxvYlVSTHMpCkBAIC0zODAwLDYgKzM4NjQsNyBAQCBSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0ds
b2JhbE9iamVjdCYgbGV4aQogICAgIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IGR1
bW15QXJyYXlCdWZmZXJzOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBXYXNtTW9kdWxl
QXJyYXkgZHVtbXlNb2R1bGVzOworICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSBkdW1teU1lbW9y
eUhhbmRsZXM7CiAjZW5kaWYKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgZHVtbXlTaGFy
ZWRCdWZmZXJzOwogICAgIGF1dG8gY29kZSA9IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgZHVtbXlNZXNzYWdlUG9ydHMsIGR1bW15QXJyYXlC
dWZmZXJzLCBkdW1teUltYWdlQml0bWFwcywKQEAgLTM4MDgsMTEgKzM4NzMsMTMgQEAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNH
bG9iYWxPYmplY3QmIGxleGkKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAg
ICAgZHVtbXlNb2R1bGVzLAorICAgICAgICBkdW1teU1lbW9yeUhhbmRsZXMsCiAjZW5kaWYKICAg
ICAgICAgYmxvYlVSTHMsIGJ1ZmZlciwgU2VyaWFsaXphdGlvbkNvbnRleHQ6OkRlZmF1bHQsIGR1
bW15U2hhcmVkQnVmZmVycyk7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRShkdW1teU1vZHVsZXMuaXNFbXB0eSgpLCAiV2FzbTo6TW9kdWxlIHNlcmlh
bGl6YXRpb24gaXMgb25seSBhbGxvd2VkIGluIHRoZSBwb3N0TWVzc2FnZSBjb250ZXh0Iik7Cisg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkdW1teU1lbW9yeUhhbmRsZXMuaXNFbXB0eSgpLCAiV2Fz
bTo6TWVtb3J5IHNlcmlhbGl6YXRpb24gaXMgb25seSBhbGxvd2VkIGluIHRoZSBwb3N0TWVzc2Fn
ZSBjb250ZXh0Iik7CiAjZW5kaWYKIAogICAgIGlmICh0aHJvd0V4Y2VwdGlvbnMgPT0gU2VyaWFs
aXphdGlvbkVycm9yTW9kZTo6VGhyb3dpbmcpCkBAIC0zODU5LDcgKzM5MjYsNyBAQCBFeGNlcHRp
b25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUoSlNHbG9iYWxPYgogI2VuZGlmCiAgICAgZm9yIChhdXRvJiB0cmFuc2ZlcmFibGUgOiB0
cmFuc2Zlckxpc3QpIHsKICAgICAgICAgaWYgKGF1dG8gYXJyYXlCdWZmZXIgPSB0b1Bvc3NpYmx5
U2hhcmVkQXJyYXlCdWZmZXIodm0sIHRyYW5zZmVyYWJsZS5nZXQoKSkpIHsKLSAgICAgICAgICAg
IGlmIChhcnJheUJ1ZmZlci0+aXNEZXRhY2hlZCgpKQorICAgICAgICAgICAgaWYgKGFycmF5QnVm
ZmVyLT5pc0RldGFjaGVkKCkgfHwgYXJyYXlCdWZmZXItPmlzU2hhcmVkKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IERhdGFDbG9uZUVycm9yIH07CiAgICAgICAgICAgICBp
ZiAoYXJyYXlCdWZmZXItPmlzTG9ja2VkKCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0zOTA0LDYgKzM5NzEsNyBAQCBFeGNlcHRp
b25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUoSlNHbG9iYWxPYgogICAgIFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxzOwogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKICAgICBXYXNtTW9kdWxlQXJyYXkgd2FzbU1vZHVsZXM7CisgICAgV2Fz
bU1lbW9yeUhhbmRsZUFycmF5IHdhc21NZW1vcnlIYW5kbGVzOwogI2VuZGlmCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycyA9IG1ha2VV
bmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PigpOwogICAgIGF1dG8gY29kZSA9IENsb25l
U2VyaWFsaXplcjo6c2VyaWFsaXplKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgbWVzc2Fn
ZVBvcnRzLCBhcnJheUJ1ZmZlcnMsIGltYWdlQml0bWFwcywKQEAgLTM5MTEsNyArMzk3OSw4IEBA
IEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iCiAgICAgICAgIG9mZnNjcmVlbkNhbnZhc2VzLAogI2Vu
ZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICAgICB3YXNtTW9kdWxlcywgCisgICAg
ICAgIHdhc21Nb2R1bGVzLAorICAgICAgICB3YXNtTWVtb3J5SGFuZGxlcywKICNlbmRpZgogICAg
ICAgICBibG9iVVJMcywgYnVmZmVyLCBjb250ZXh0LCAqc2hhcmVkQnVmZmVycyk7CiAKQEAgLTM5
MzYsNiArNDAwNSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iCiAjZW5kaWYKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICAgICAgLCBtYWtlVW5pcXVlPFdhc21Nb2R1bGVB
cnJheT4od2FzbU1vZHVsZXMpCisgICAgICAgICAgICAgICAgLCBtYWtlVW5pcXVlPFdhc21NZW1v
cnlIYW5kbGVBcnJheT4od2FzbU1lbW9yeUhhbmRsZXMpCiAjZW5kaWYKICAgICAgICAgICAgICAg
ICApKTsKIH0KQEAgLTM5OTMsNiArNDA2Myw3IEBAIEpTVmFsdWUgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpkZXNlcmlhbGl6ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAg
ICAgICAgLCBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheS5nZXQoKSwgbV9kYXRhLCBibG9iVVJM
cywgYmxvYkZpbGVQYXRocywgbV9zaGFyZWRCdWZmZXJDb250ZW50c0FycmF5LmdldCgpCiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAsIG1fd2FzbU1vZHVsZXNBcnJheS5nZXQoKQor
ICAgICAgICAsIG1fd2FzbU1lbW9yeUhhbmRsZXNBcnJheS5nZXQoKQogI2VuZGlmCiAgICAgICAg
ICk7CiAgICAgaWYgKHRocm93RXhjZXB0aW9ucyA9PSBTZXJpYWxpemF0aW9uRXJyb3JNb2RlOjpU
aHJvd2luZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgKaW5kZXggZDJhMGM0YTBiODNkYWU4OTJkYjc5NTA2ZWQzMTZkZWIzOGExNjUw
ZC4uMGNkYjQwMThjODQ3ZmEwMGZlZDdmNWZiMGZjYmNhMzUzOTgzNTI1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTQx
LDYgKzQxLDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNWYWx1ZSogSlNWYWx1ZVJl
ZjsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdh
c20gewogY2xhc3MgTW9kdWxlOworY2xhc3MgTWVtb3J5SGFuZGxlOwogfSB9CiAjZW5kaWYKIApA
QCAtNjEsNiArNjIsNyBAQCBlbnVtIGNsYXNzIFNlcmlhbGl6YXRpb25Db250ZXh0IHsgRGVmYXVs
dCwgV29ya2VyUG9zdE1lc3NhZ2UsIFdpbmRvd1Bvc3RNZXNzYWdlCiB1c2luZyBBcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXkgPSBWZWN0b3I8SlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzPjsKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiB1c2luZyBXYXNtTW9kdWxlQXJyYXkgPSBWZWN0b3I8UmVmUHRy
PEpTQzo6V2FzbTo6TW9kdWxlPj47Cit1c2luZyBXYXNtTWVtb3J5SGFuZGxlQXJyYXkgPSBWZWN0
b3I8UmVmUHRyPEpTQzo6V2FzbTo6TWVtb3J5SGFuZGxlPj47CiAjZW5kaWYKIAogREVDTEFSRV9B
TExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoU2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKQEAg
LTEyMiw2ICsxMjQsNyBAQCBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8U2VyaWFsaXplZFNjcmlwdFZhbHVlPgogI2VuZGlmCiAjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAsIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTW9kdWxlQXJy
YXk+ID0gbnVsbHB0cgorICAgICAgICAsIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTWVtb3J5SGFuZGxl
QXJyYXk+ID0gbnVsbHB0cgogI2VuZGlmCiAgICAgICAgICk7CiAKQEAgLTEzNiw2ICsxMzksNyBA
QCBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8U2VyaWFsaXplZFNjcmlwdFZhbHVlPgogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTW9kdWxlQXJyYXk+IG1fd2FzbU1vZHVsZXNBcnJh
eTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1lbW9yeUhhbmRsZUFycmF5PiBtX3dhc21NZW1v
cnlIYW5kbGVzQXJyYXk7CiAjZW5kaWYKICAgICBWZWN0b3I8U3RyaW5nPiBtX2Jsb2JVUkxzOwog
ICAgIHNpemVfdCBtX21lbW9yeUNvc3QgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCmluZGV4IDA3NjYwODM4MDc0ZTI2ZWJm
NDMxZDUxYTlhZjMxMDE5YzU5YTA3NjQuLmExNDNmMzA0YjRhYzk5NWU3ZTEyYTRiODg3MTRjYjM0
ZTY4YTE2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVK
U0NsaWVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVK
U0NsaWVudERhdGEuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBKU1ZNQ2xpZW50RGF0YTo6
Z2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mIHdvcmxkcykKICAgICB9
CiB9CiAKLXZvaWQgSlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZChWTSogdm0pCit2b2lk
IEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29ybGQoVk0qIHZtLCBXb3JrZXJUaHJlYWRUeXBl
IHR5cGUpCiB7CiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBuZXcgSlNWTUNsaWVu
dERhdGEoKnZtKTsKICAgICB2bS0+Y2xpZW50RGF0YSA9IGNsaWVudERhdGE7IC8vIH5WTSBkZWxl
dGVzIHRoaXMgcG9pbnRlci4KQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIEpTVk1DbGllbnREYXRh
Ojppbml0Tm9ybWFsV29ybGQoVk0qIHZtKQogICAgIHZtLT5oZWFwLmFkZE1hcmtpbmdDb25zdHJh
aW50KG1ha2VVbmlxdWU8RE9NR0NPdXRwdXRDb25zdHJhaW50Pigqdm0sICpjbGllbnREYXRhKSk7
CiAKICAgICBjbGllbnREYXRhLT5tX25vcm1hbFdvcmxkID0gRE9NV3JhcHBlcldvcmxkOjpjcmVh
dGUoKnZtLCBET01XcmFwcGVyV29ybGQ6OlR5cGU6Ok5vcm1hbCk7Ci0gICAgdm0tPm1fdHlwZWRB
cnJheUNvbnRyb2xsZXIgPSBhZG9wdFJlZihuZXcgV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVy
KCkpOworICAgIHZtLT5tX3R5cGVkQXJyYXlDb250cm9sbGVyID0gYWRvcHRSZWYobmV3IFdlYkNv
cmVUeXBlZEFycmF5Q29udHJvbGxlcih0eXBlID09IFdvcmtlclRocmVhZFR5cGU6OkRlZGljYXRl
ZFdvcmtlciB8fCB0eXBlID09IFdvcmtlclRocmVhZFR5cGU6OldvcmtsZXQpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUpTQ2xpZW50RGF0YS5oCmluZGV4IGI4NDQwZTg3NzBlNDcyOTFmN2VlMjA2MzE5OWVhMDVj
M2M0YmIwYzEuLjBkYTUzMzI3MDUwODBjNDkxMjdjMzQ0YWEwMjE5MzI1ZGM2NmM3NDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgKQEAg
LTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJX
ZWJDb3JlQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQnVpbHRpbnMuaCIKKyNp
bmNsdWRlICJXb3JrZXJUaHJlYWRUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTQwLDcgKzQxLDcgQEAgY2xhc3MgSlNWTUNsaWVu
dERhdGEgOiBwdWJsaWMgSlNDOjpWTTo6Q2xpZW50RGF0YSB7CiAKICAgICB2aXJ0dWFsIH5KU1ZN
Q2xpZW50RGF0YSgpOwogICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGluaXRO
b3JtYWxXb3JsZChKU0M6OlZNKik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgaW5p
dE5vcm1hbFdvcmxkKEpTQzo6Vk0qLCBXb3JrZXJUaHJlYWRUeXBlKTsKIAogICAgIERPTVdyYXBw
ZXJXb3JsZCYgbm9ybWFsV29ybGQoKSB7IHJldHVybiAqbV9ub3JtYWxXb3JsZDsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlD
b250cm9sbGVyLmNwcAppbmRleCBjMThmYThlMzY0OGE0NjZiZWEyYzFmOGM4OTNkMTUzZjA5ODc0
MGVkLi42ZDAxNmM4NmFjNzkxZTU1MGEyMTQyMDBkZTNiZDliM2ViODE3NGI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVUeXBlZEFycmF5Q29u
dHJvbGxlci5jcHAKQEAgLTM0LDcgKzM0LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
V2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyOjpXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIo
KSA9IGRlZmF1bHQ7CitXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXI6OldlYkNvcmVUeXBlZEFy
cmF5Q29udHJvbGxlcihib29sIGFsbG93QXRvbWljc1dhaXQpCisgICAgOiBtX2FsbG93QXRvbWlj
c1dhaXQoYWxsb3dBdG9taWNzV2FpdCkKK3sKK30KIAogV2ViQ29yZVR5cGVkQXJyYXlDb250cm9s
bGVyOjp+V2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyKCkgPSBkZWZhdWx0OwogCkBAIC01MCw3
ICs1Myw3IEBAIHZvaWQgV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyOjpyZWdpc3RlcldyYXBw
ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAKIGJvb2wgV2ViQ29yZVR5cGVkQXJy
YXlDb250cm9sbGVyOjppc0F0b21pY3NXYWl0QWxsb3dlZE9uQ3VycmVudFRocmVhZCgpCiB7Ci0g
ICAgcmV0dXJuICFpc01haW5UaHJlYWQoKTsKKyAgICByZXR1cm4gbV9hbGxvd0F0b21pY3NXYWl0
OwogfQogCiBib29sIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcjo6SlNBcnJheUJ1ZmZlck93
bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
IGhhbmRsZSwgdm9pZCosIEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIqKiBy
ZWFzb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlVHlw
ZWRBcnJheUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVU
eXBlZEFycmF5Q29udHJvbGxlci5oCmluZGV4IGZhYWMyMjYyMjEyZTUzNjhiMDhhYzI5MGZkODA5
YmE2ODRjMmRjNjAuLjUxMTlhZDFmM2EyZWVkMTEwMzg1ZjVhMjU0MDNhYTJmNTdhMGJjOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVUeXBlZEFycmF5Q29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVUeXBlZEFy
cmF5Q29udHJvbGxlci5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyIDogcHVibGljIEpTQzo6VHlwZWRBcnJh
eUNvbnRyb2xsZXIgewogcHVibGljOgotICAgIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcigp
OworICAgIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcihib29sIGFsbG93QXRvbWljc1dhaXQp
OwogICAgIHZpcnR1YWwgfldlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcigpOwogICAgIAogICAg
IEpTQzo6SlNBcnJheUJ1ZmZlciogdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6QXJyYXlCdWZmZXIqKSBvdmVycmlkZTsKQEAgLTUzLDYgKzUzLDcg
QEAgY2xhc3MgV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyIDogcHVibGljIEpTQzo6VHlwZWRB
cnJheUNvbnRyb2xsZXIgewogICAgIH07CiAKICAgICBKU0FycmF5QnVmZmVyT3duZXIgbV9vd25l
cjsKKyAgICBib29sIG1fYWxsb3dBdG9taWNzV2FpdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KaW5kZXggMjdjNzk3ZDM0MGRiNDZiN2UzMWJhNmRiZWIyOTFjYzQzOTI1ODAxZC4u
NTE2M2NjY2NiOTA3M2JiZmM4NzhiZTE3ZjZiOTVmZDE1N2QyMDg5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTY5ODcs
NiArNjk4Nyw3IEBAIHN1YiBJc0Fubm90YXRlZFR5cGUKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmd9OwogICAgIHJldHVy
biAxIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBdG9tU3RyaW5nfTsKICAgICByZXR1
cm4gMSBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmVxdWlyZXNFeGlzdGluZ0F0b21T
dHJpbmd9OworICAgIHJldHVybiAxIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBbGxv
d1NoYXJlZH07CiB9CiAKIHN1YiBHZXRBbm5vdGF0ZWRJRExUeXBlCkBAIC02OTk4LDYgKzY5OTks
NyBAQCBzdWIgR2V0QW5ub3RhdGVkSURMVHlwZQogICAgIHJldHVybiAiSURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmd9OwogICAgIHJldHVybiAiSURMQXRvbVN0cmluZ0FkYXB0b3IiIGlm
ICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBdG9tU3RyaW5nfTsKICAgICByZXR1cm4gIklE
TFJlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nQWRhcHRvciIgaWYgJHR5cGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nfTsKKyAgICByZXR1cm4gIklETEFs
bG93U2hhcmVkQWRhcHRvciIgaWYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0FsbG93U2hh
cmVkfTsKIH0KIAogc3ViIEdldEJhc2VJRExUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCmluZGV4IGM4ZWNmZjM4NmMyM2NmNjI4
NGU5YWFlNzA0YzRjNmFmNjg0YjIwNDkuLjRlMDNlOWZhNGFhMzFiNGNlOGJlZGNjZDBiOGMwMjlk
NDMyZjU5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURM
QXR0cmlidXRlcy5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURM
QXR0cmlidXRlcy5qc29uCkBAIC0yNCw4ICsyNCw3IEBACiAgICAgICAgICAgICAiY29udGV4dHNB
bGxvd2VkIjogWyJ0eXBlIl0sCiAgICAgICAgICAgICAic3RhbmRhcmQiOiB7CiAgICAgICAgICAg
ICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNBbGxvd1NoYXJl
ZCIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAidW5zdXBwb3J0ZWQiOiB0cnVlCisgICAg
ICAgICAgICB9CiAgICAgICAgIH0sCiAgICAgICAgICJBcHBsZUNvcHlyaWdodCI6IHsKICAgICAg
ICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSIsICJhdHRyaWJ1dGUiLCAib3Bl
cmF0aW9uIl0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2Rlci5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXIuaWRsCmluZGV4IGRiMzRjYjJlOGE2NTRl
ODA2MjllM2U2NDM0N2U0NWJjMDdjNTU0NjEuLjIxNGFkN2UzYjA2M2VhMTdjNzk5MTA2MTlhMGFh
NDI3YWQ3ZDUxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2Rlci5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmlkbApAQCAtNDEsNSArNDEs
NSBAQCBkaWN0aW9uYXJ5IFRleHREZWNvZGVPcHRpb25zIHsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGVuY29kaW5nOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGZh
dGFsOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlnbm9yZUJPTTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIFVTVlN0cmluZyBkZWNvZGUob3B0aW9uYWwgQnVmZmVyU291cmNlPyBp
bnB1dCwgb3B0aW9uYWwgVGV4dERlY29kZU9wdGlvbnMgb3B0aW9ucyk7CisgICAgW01heVRocm93
RXhjZXB0aW9uXSBVU1ZTdHJpbmcgZGVjb2RlKG9wdGlvbmFsIFtBbGxvd1NoYXJlZF0gQnVmZmVy
U291cmNlPyBpbnB1dCwgb3B0aW9uYWwgVGV4dERlY29kZU9wdGlvbnMgb3B0aW9ucyk7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UZXh0RW5jb2Rlci5pZGwKaW5kZXggMDVkODI2ZDgyYjI5OTNmODE5ODk2MTBj
MGVhZDE5NGIwYzZjNGI5NC4uNmJjYjg5NWU4YjBkYTUyMmI4YjViNGM1YzIwNmI3YmY2Y2NlN2Fk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXIuaWRsCkBAIC0zOSw1ICszOSw1IEBACiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBlbmNvZGluZzsKIAogICAgIFtOZXdPYmplY3Rd
IFVpbnQ4QXJyYXkgZW5jb2RlKG9wdGlvbmFsIFVTVlN0cmluZyBpbnB1dCA9ICIiKTsKLSAgICBU
ZXh0RW5jb2RlckVuY29kZUludG9SZXN1bHQgZW5jb2RlSW50byhVU1ZTdHJpbmcgc291cmNlLCBV
aW50OEFycmF5IGRlc3RpbmF0aW9uKTsKKyAgICBUZXh0RW5jb2RlckVuY29kZUludG9SZXN1bHQg
ZW5jb2RlSW50byhVU1ZTdHJpbmcgc291cmNlLCBbQWxsb3dTaGFyZWRdIFVpbnQ4QXJyYXkgZGVz
dGluYXRpb24pOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggZWYxZDhiY2FkYTI1YmMyNWYxNTE3ZTc4ODll
MjQxYzNlNDllM2RhZS4uN2RiNDlmZTRiMzM2NmNhNjY4M2Y0YjU3MWQxYjc1Yjk5YzVhNDExNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgUmVmPERlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlPiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKGNvbnN0IFdvcmtlclAKIH0K
IAogRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
KGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9y
aWdpbiwgRGVkaWNhdGVkV29ya2VyVGhyZWFkJiB0aHJlYWQsIFJlZjxTZWN1cml0eU9yaWdpbj4m
JiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJv
eHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikKLSAgICA6IFdvcmtlckdsb2JhbFNj
b3BlKHBhcmFtcywgV1RGTW92ZShvcmlnaW4pLCB0aHJlYWQsIFdURk1vdmUodG9wT3JpZ2luKSwg
Y29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlcikKKyAgICA6IFdvcmtlckdsb2JhbFNjb3Bl
KFdvcmtlclRocmVhZFR5cGU6OkRlZGljYXRlZFdvcmtlciwgcGFyYW1zLCBXVEZNb3ZlKG9yaWdp
biksIHRocmVhZCwgV1RGTW92ZSh0b3BPcmlnaW4pLCBjb25uZWN0aW9uUHJveHksIHNvY2tldFBy
b3ZpZGVyKQogICAgICwgbV9uYW1lKHBhcmFtcy5uYW1lKQogewogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA1MDJlYzdkNzc2MzU1Zjk2ZTBk
ZThkYzhjNDM5MTU4MWY5MDZmNjA3Li42ZjBmNjJkNzgzYzk0ODFkYmFiMWVmOWUzOGU1NzlmNDBh
YTFkMjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNw
cApAQCAtNTksOCArNTksOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoV29ya2VyR2xvYmFsU2NvcGUpOwogCi1Xb3JrZXJHbG9iYWxT
Y29wZTo6V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1zLCBS
ZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBXb3JrZXJUaHJlYWQmIHRocmVhZCwgUmVmPFNl
Y3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkq
IGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKQotICAgIDog
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpWTTo6Y3JlYXRlKCksICZ0aHJlYWQpCitX
b3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZSB0eXBl
LCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBv
cmlnaW4sIFdvcmtlclRocmVhZCYgdGhyZWFkLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3Jp
Z2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2Nr
ZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIpCisgICAgOiBXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSh0eXBlLCBKU0M6OlZNOjpjcmVhdGUoKSwgJnRocmVhZCkKICAgICAsIG1fdXJsKHBhcmFt
cy5zY3JpcHRVUkwpCiAgICAgLCBtX2lkZW50aWZpZXIocGFyYW1zLmlkZW50aWZpZXIpCiAgICAg
LCBtX3VzZXJBZ2VudChwYXJhbXMudXNlckFnZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IGQ5MjIxZGI5ZjU4NjdhMmMwYjI4OWMzMzhkM2Q0NDIw
ZjgzNjQ2YzAuLjdhYjA5ZjZhZjMzZTQ1YjIyMzczODZhMzA2MzEwMWI5ZTU2ZjNkMTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTEyNiw3ICsxMjYs
NyBAQCBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZSA6IHB1YmxpYyBTdXBwbGVtZW50YWJsZTxXb3Jr
ZXJHbG9iYWxTY29wZT4sIHB1YmxpYyBCYXNlNgogICAgIGJvb2wgd2ViR0xFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV93ZWJHTEVuYWJsZWQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFdvcmtlckds
b2JhbFNjb3BlKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYs
IFdvcmtlclRocmVhZCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVu
dDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqKTsKKyAgICBXb3JrZXJHbG9i
YWxTY29wZShXb3JrZXJUaHJlYWRUeXBlLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNl
Y3VyaXR5T3JpZ2luPiYmLCBXb3JrZXJUaHJlYWQmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9w
T3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKik7
CiAKICAgICB2b2lkIGFwcGx5Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmlu
ZGV4IGY0NDlhYzAyYmU4MGNmNDhmYjgyOTJjNDI5YWIyYzJlNmIzZmIwYjYuLjIzODRhNWE4Yzdk
MmEzMDJlZWU1Y2I0MDVlMTA1ZTAyNWM5ODQzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0zNyw4ICszNyw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKTsKIAotV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU6
Oldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFJlZjxKU0M6OlZNPiYmIHZtLCBXb3JrZXJPcldv
cmtsZXRUaHJlYWQqIHRocmVhZCkKLSAgICA6IG1fc2NyaXB0KG1ha2VVbmlxdWU8V29ya2VyT3JX
b3JrbGV0U2NyaXB0Q29udHJvbGxlcj4oV1RGTW92ZSh2bSksIHRoaXMpKQorV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGU6Oldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5
cGUgdHlwZSwgUmVmPEpTQzo6Vk0+JiYgdm0sIFdvcmtlck9yV29ya2xldFRocmVhZCogdGhyZWFk
KQorICAgIDogbV9zY3JpcHQobWFrZVVuaXF1ZTxXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyPih0eXBlLCBXVEZNb3ZlKHZtKSwgdGhpcykpCiAgICAgLCBtX3RocmVhZCh0aHJlYWQpCiAg
ICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIobWFrZVVuaXF1ZTxXb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyPigqdGhpcykpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXggZjBjOTBjMjIxOWJmZTQ5MjZjODI4NzEzNjZj
Mzg5MDljNjFmNzQ4NS4uNmMyNDRhMGM0MjdlZTFjOGM2NWZkY2M3NjU5NTJmODc3ZmQ5YjE2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFk
VHlwZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY3LDcgKzY4LDcgQEAgY2xhc3Mg
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgcHVibGljIFJlZkNvdW4KICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgeyB9CiAKIHByb3Rl
Y3RlZDoKLSAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShSZWY8SlNDOjpWTT4mJiwgV29y
a2VyT3JXb3JrbGV0VGhyZWFkKik7CisgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoV29y
a2VyVGhyZWFkVHlwZSwgUmVmPEpTQzo6Vk0+JiYsIFdvcmtlck9yV29ya2xldFRocmVhZCopOwog
CiAgICAgLy8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dC4KICAgICBib29sIGlzSlNFeGVjdXRpb25G
b3JiaWRkZW4oKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDQwMWQ1ZjJm
NDBiN2I3YmRlOGU2MzM2NjJhZDMxZmIxY2QzZjI4NjEuLmNkNGVjMjQ2ODI1MjVhYWJjNjQyZDg3
N2EwZGEwMTFlYmRlMTE0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNTAsMTcgKzUwLDE3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotV29ya2Vy
T3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxl
cihSZWY8Vk0+JiYgdm0sIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiBnbG9iYWxTY29wZSkK
K1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6Oldvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXIoV29ya2VyVGhyZWFkVHlwZSB0eXBlLCBSZWY8Vk0+JiYgdm0sIFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKiBnbG9iYWxTY29wZSkKICAgICA6IG1fdm0oV1RGTW92ZSh2bSkpCiAg
ICAgLCBtX2dsb2JhbFNjb3BlKGdsb2JhbFNjb3BlKQogICAgICwgbV9nbG9iYWxTY29wZVdyYXBw
ZXIoKm1fdm0pCiB7CiAgICAgbV92bS0+aGVhcC5hY3F1aXJlQWNjZXNzKCk7IC8vIEl0J3Mgbm90
IGNsZWFyIHRoYXQgd2UgaGF2ZSBnb29kIGRpc2NpcGxpbmUgZm9yIGhlYXAgYWNjZXNzLCBzbyB0
dXJuIGl0IG9uIHBlcm1hbmVudGx5LgotICAgIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29y
bGQobV92bS5nZXQoKSk7CisgICAgSlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZChtX3Zt
LmdldCgpLCB0eXBlKTsKIH0KIAotV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6V29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcihXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSog
Z2xvYmFsU2NvcGUpCi0gICAgOiBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKEpTQzo6
Vk06OmNyZWF0ZSgpLCBnbG9iYWxTY29wZSkKK1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIoV29ya2VyVGhyZWFkVHlwZSB0eXBl
LCBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSogZ2xvYmFsU2NvcGUpCisgICAgOiBXb3JrZXJP
cldvcmtsZXRTY3JpcHRDb250cm9sbGVyKHR5cGUsIEpTQzo6Vk06OmNyZWF0ZSgpLCBnbG9iYWxT
Y29wZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJP
cldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAppbmRleCBlZTU3OTdiZGMwNmIyYTg3NTBjODgy
MTBlNzAyY2I1MzYwOGU0ZTk0Li5jNDkzMDFhZWQzZGQwODlkYTc5NzMyNzYwY2FmMmY3YjY0ZGIx
MWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29y
a2xldFNjcmlwdENvbnRyb2xsZXIuaApAQCAtMjYsNiArMjYsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIldvcmtlclRocmVhZFR5cGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9EZWJ1Z2dlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUnVuTG9vcFRpbWVyLmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTUxLDggKzUyLDggQEAgY2xhc3MgV29ya2Vy
T3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcihSZWY8SlND
OjpWTT4mJiwgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqKTsKLSAgICBleHBsaWNpdCBXb3Jr
ZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKik7
CisgICAgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcihXb3JrZXJUaHJlYWRUeXBlLCBS
ZWY8SlNDOjpWTT4mJiwgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqKTsKKyAgICBleHBsaWNp
dCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKFdvcmtlclRocmVhZFR5cGUsIFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKik7CiAgICAgfldvcmtlck9yV29ya2xldFNjcmlwdENvbnRy
b2xsZXIoKTsKIAogICAgIHZvaWQgcmVsZWFzZUhlYXBBY2Nlc3MoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkVHlwZS5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWRUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTgzMDY1YmVhMWM2M2Y5MTc1
NjIzMWEyN2U0NDhiOWRhMmI5ZGM5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkVHlwZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIFdvcmtl
clRocmVhZFR5cGUgOiB1aW50OF90IHsKKyAgICBNYWluLAorICAgIFdvcmtsZXQsCisgICAgRGVk
aWNhdGVkV29ya2VyLAorICAgIFNlcnZpY2VXb3JrZXIsCit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGNlNTc5ZjdjNTMxODQwMzcyMWMxYTMz
Y2I5MDUxYThlNDUwNWZkZDguLjhkNzNmZjM1NWJhMTBiOGIxMjUwMWE5Njk1M2JmNGY0MDgxNTVh
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC01Miw3ICs1Miw3IEBAIFJlZjxTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGU+IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKGNvbnN0
IFNlcnZpY2VXb3JrCiB9CiAKIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6U2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSwgY29uc3Qg
V29ya2VyUGFyYW1ldGVycyYgcGFyYW1zLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBT
ZXJ2aWNlV29ya2VyVGhyZWFkJiB0aHJlYWQsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmln
aW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tl
dFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikKLSAgICA6IFdvcmtlckdsb2JhbFNjb3BlKHBhcmFt
cywgV1RGTW92ZShvcmlnaW4pLCB0aHJlYWQsIFdURk1vdmUodG9wT3JpZ2luKSwgY29ubmVjdGlv
blByb3h5LCBzb2NrZXRQcm92aWRlcikKKyAgICA6IFdvcmtlckdsb2JhbFNjb3BlKFdvcmtlclRo
cmVhZFR5cGU6OlNlcnZpY2VXb3JrZXIsIHBhcmFtcywgV1RGTW92ZShvcmlnaW4pLCB0aHJlYWQs
IFdURk1vdmUodG9wT3JpZ2luKSwgY29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlcikKICAg
ICAsIG1fY29udGV4dERhdGEoY3Jvc3NUaHJlYWRDb3B5KGRhdGEpKQogICAgICwgbV9yZWdpc3Ry
YXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0T3JDcmVhdGUoKnRoaXMsIG5hdmln
YXRvcigpLnNlcnZpY2VXb3JrZXIoKSwgV1RGTW92ZShtX2NvbnRleHREYXRhLnJlZ2lzdHJhdGlv
bikpKQogICAgICwgbV9jbGllbnRzKFNlcnZpY2VXb3JrZXJDbGllbnRzOjpjcmVhdGUoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IGQw
MjgzNDIwYWQ3MzE3YWZhOTk3YTBlNDhlMmE4NzU1NWNiNzI0ZGQuLjdiMDA5OTMxNWM2NDM0ODA4
ZmJhZDZmYjAzMTVjNDM0N2MyZGNhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtNTAsNyArNTAsNyBAQCBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoV29ya2xldEdsb2JhbFNjb3BlKTsKIHN0YXRpYyBzdGQ6OmF0b21pYzx1bnNp
Z25lZD4gZ051bWJlck9mV29ya2xldEdsb2JhbFNjb3BlcyB7IDAgfTsKIAogV29ya2xldEdsb2Jh
bFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyT3JXb3JrbGV0VGhyZWFkJiB0aHJlYWQs
IGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotICAgIDogV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUoSlNDOjpWTTo6Y3JlYXRlKCksICZ0aHJlYWQpCisgICAgOiBXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZShXb3JrZXJUaHJlYWRUeXBlOjpXb3JrbGV0LCBKU0M6OlZNOjpj
cmVhdGUoKSwgJnRocmVhZCkKICAgICAsIG1fdG9wT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVVbmlxdWUoKSkKICAgICAsIG1fdXJsKHBhcmFtZXRlcnMud2luZG93VVJMKQogICAgICwgbV9q
c1J1bnRpbWVGbGFncyhwYXJhbWV0ZXJzLmpzUnVudGltZUZsYWdzKQpAQCAtNjIsNyArNjIsNyBA
QCBXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZShXb3JrZXJPcldvcmtsZXRU
aHJlYWQmIHRocmVhZCwgY29uc3QgV29yawogfQogCiBXb3JrbGV0R2xvYmFsU2NvcGU6Oldvcmts
ZXRHbG9iYWxTY29wZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxKU0M6OlZNPiYmIHZtLCBTY3Jp
cHRTb3VyY2VDb2RlJiYgY29kZSkKLSAgICA6IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdU
Rk1vdmUodm0pLCBudWxscHRyKQorICAgIDogV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoV29y
a2VyVGhyZWFkVHlwZTo6V29ya2xldCwgV1RGTW92ZSh2bSksIG51bGxwdHIpCiAgICAgLCBtX2Rv
Y3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50KSkKICAgICAsIG1fdG9wT3JpZ2luKFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSkKICAgICAsIG1fdXJsKGNvZGUudXJsKCkpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA3ZjY2ODljOTRiNDNhNTM3MDQ4ODc5NjcyODE3ZGVl
OGNkMmZiYzVmLi5lZGUzNjQ0NGM5YTU0ZjI4NWIxMDExNjFlY2NiMTc0NmE1MDJhOTIwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0xMS0xMyAg
WXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxl
bWVudCBXZWJBc3NlbWJseS5NZW1vcnkgd2l0aCBzaGFyZWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODY5MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2Vi
YXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhl
LWphdmFzY3JpcHQtYWdlbnQtZm9ybWFsaXNtL3JlcXVpcmVzLXN1Y2Nlc3MuYW55Lndvcmtlci1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVt
b3J5L2NvbnN0cnVjdG9yLmFueS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFueS53b3JrZXItZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9ncm93
LmFueS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNh
cGkvbWVtb3J5L2dyb3cuYW55Lndvcmtlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvYnVmZmVyLWludGVy
ZmFjZS9hdWRpb2J1ZmZlci1jb3B5LWNoYW5uZWwtZXhwZWN0ZWQudHh0OgorCiAyMDIwLTExLTEy
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2Vk
IGFkdmFuY2VkIHBsdWctaW4gZmVhdHVyZXM6IHNuYXBzaG90dGluZyBhbmQgcGx1Zy1pbiBsb2Fk
IHBvbGljeQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRl
Z3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWFnZW50LWZvcm1hbGlzbS9yZXF1aXJlcy1zdWNj
ZXNzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9k
ZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWFnZW50LWZvcm1hbGlzbS9yZXF1
aXJlcy1zdWNjZXNzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IDBiOTg2MGNjYzUzNDRm
NTJkZDc4NDUyMTBiOWQ0MjNjMjVjMTQyODkuLjU1OWYwZmU0MjI5NmY2YWNhNGEwZmEwNTI3NjI5
MTNlNjhjNzRkMzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIv
aW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1hZ2VudC1mb3JtYWxpc20vcmVxdWlyZXMt
c3VjY2Vzcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vz
c2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtYWdlbnQtZm9ybWFs
aXNtL3JlcXVpcmVzLXN1Y2Nlc3MuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwz
IEBACiAKLUZBSUwgW1tDYW5CbG9ja11dIGluIGEgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUg
VHlwZWQgYXJyYXkgZm9yIHdhaXQvbm90aWZ5IG11c3Qgd3JhcCBhIFNoYXJlZEFycmF5QnVmZmVy
LgorUEFTUyBbW0NhbkJsb2NrXV0gaW4gYSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0
cnVjdG9yLmFueS1leHBlY3RlZC50eHQKaW5kZXggOWEyNDkwNTdmNDk4MjY0OTQ2ZmJiZTYzMThh
ZjczMmJhZDVhN2RlZS4uNGJiNDk0MmExYWVjYmRlNmRkMjc3YWQwYjRmYmE4MjhlMWY5ZDA0ZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5hbnktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkv
Y29uc3RydWN0b3IuYW55LWV4cGVjdGVkLnR4dApAQCAtMTgsMTIgKzE4LDEyIEBAIFBBU1MgT3V0
LW9mLXJhbmdlIG1heGltdW0gdmFsdWUgaW4gZGVzY3JpcHRvcjogNDI5NDk2NzI5NgogUEFTUyBP
dXQtb2YtcmFuZ2UgaW5pdGlhbCB2YWx1ZSBpbiBkZXNjcmlwdG9yOiA2ODcxOTQ3NjczNgogUEFT
UyBPdXQtb2YtcmFuZ2UgbWF4aW11bSB2YWx1ZSBpbiBkZXNjcmlwdG9yOiA2ODcxOTQ3NjczNgog
UEFTUyBJbml0aWFsIHZhbHVlIGV4Y2VlZHMgbWF4aW11bQotRkFJTCBTaGFyZWQgbWVtb3J5IHdp
dGhvdXQgbWF4aW11bSBhc3NlcnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4gbmV3IFdlYkFz
c2VtYmx5Lk1lbW9yeSh7ICJpbml0aWFsIjogMTAsICJzaGFyZWQiOiB0cnVlIH0pIiBkaWQgbm90
IHRocm93CitQQVNTIFNoYXJlZCBtZW1vcnkgd2l0aG91dCBtYXhpbXVtCiBQQVNTIFByb3h5IGRl
c2NyaXB0b3IKIFBBU1MgT3JkZXIgb2YgZXZhbHVhdGlvbiBmb3IgZGVzY3JpcHRvcgotRkFJTCBP
cmRlciBvZiBldmFsdWF0aW9uIGZvciBkZXNjcmlwdG9yICh3aXRoIHNoYXJlZCkgYXNzZXJ0X2Fy
cmF5X2VxdWFsczogbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsiaW5pdGlhbCIsICJp
bml0aWFsIHZhbHVlT2YiLCAibWF4aW11bSIsICJtYXhpbXVtIHZhbHVlT2YiLCAic2hhcmVkIl0g
bGVuZ3RoIDUsIGdvdCBbImluaXRpYWwiLCAiaW5pdGlhbCB2YWx1ZU9mIiwgIm1heGltdW0iLCAi
bWF4aW11bSB2YWx1ZU9mIl0gbGVuZ3RoIDQKK1BBU1MgT3JkZXIgb2YgZXZhbHVhdGlvbiBmb3Ig
ZGVzY3JpcHRvciAod2l0aCBzaGFyZWQpCiBQQVNTIFplcm8gaW5pdGlhbAogUEFTUyBOb24temVy
byBpbml0aWFsCi1GQUlMIFN0cmF5IGFyZ3VtZW50IFdlYkFzc2VtYmx5Lk1lbW9yeSBleHBlY3Rz
IGV4YWN0bHkgb25lIGFyZ3VtZW50Ci1GQUlMIFNoYXJlZCBtZW1vcnkgYXNzZXJ0X2VxdWFsczog
cHJvdG90eXBlIG9mIGJ1ZmZlciBleHBlY3RlZCBvYmplY3QgIltvYmplY3QgU2hhcmVkQXJyYXlC
dWZmZXJdIiBidXQgZ290IG9iamVjdCAiW29iamVjdCBBcnJheUJ1ZmZlcl0iCitQQVNTIFN0cmF5
IGFyZ3VtZW50CitQQVNTIFNoYXJlZCBtZW1vcnkKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1
Y3Rvci5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvY29uc3RydWN0b3IuYW55Lndvcmtl
ci1leHBlY3RlZC50eHQKaW5kZXggOWEyNDkwNTdmNDk4MjY0OTQ2ZmJiZTYzMThhZjczMmJhZDVh
N2RlZS4uNGJiNDk0MmExYWVjYmRlNmRkMjc3YWQwYjRmYmE4MjhlMWY5ZDA0ZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBp
L21lbW9yeS9jb25zdHJ1Y3Rvci5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2Nv
bnN0cnVjdG9yLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0xOCwxMiArMTgsMTIgQEAgUEFT
UyBPdXQtb2YtcmFuZ2UgbWF4aW11bSB2YWx1ZSBpbiBkZXNjcmlwdG9yOiA0Mjk0OTY3Mjk2CiBQ
QVNTIE91dC1vZi1yYW5nZSBpbml0aWFsIHZhbHVlIGluIGRlc2NyaXB0b3I6IDY4NzE5NDc2NzM2
CiBQQVNTIE91dC1vZi1yYW5nZSBtYXhpbXVtIHZhbHVlIGluIGRlc2NyaXB0b3I6IDY4NzE5NDc2
NzM2CiBQQVNTIEluaXRpYWwgdmFsdWUgZXhjZWVkcyBtYXhpbXVtCi1GQUlMIFNoYXJlZCBtZW1v
cnkgd2l0aG91dCBtYXhpbXVtIGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBuZXcg
V2ViQXNzZW1ibHkuTWVtb3J5KHsgImluaXRpYWwiOiAxMCwgInNoYXJlZCI6IHRydWUgfSkiIGRp
ZCBub3QgdGhyb3cKK1BBU1MgU2hhcmVkIG1lbW9yeSB3aXRob3V0IG1heGltdW0KIFBBU1MgUHJv
eHkgZGVzY3JpcHRvcgogUEFTUyBPcmRlciBvZiBldmFsdWF0aW9uIGZvciBkZXNjcmlwdG9yCi1G
QUlMIE9yZGVyIG9mIGV2YWx1YXRpb24gZm9yIGRlc2NyaXB0b3IgKHdpdGggc2hhcmVkKSBhc3Nl
cnRfYXJyYXlfZXF1YWxzOiBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkgWyJpbml0aWFs
IiwgImluaXRpYWwgdmFsdWVPZiIsICJtYXhpbXVtIiwgIm1heGltdW0gdmFsdWVPZiIsICJzaGFy
ZWQiXSBsZW5ndGggNSwgZ290IFsiaW5pdGlhbCIsICJpbml0aWFsIHZhbHVlT2YiLCAibWF4aW11
bSIsICJtYXhpbXVtIHZhbHVlT2YiXSBsZW5ndGggNAorUEFTUyBPcmRlciBvZiBldmFsdWF0aW9u
IGZvciBkZXNjcmlwdG9yICh3aXRoIHNoYXJlZCkKIFBBU1MgWmVybyBpbml0aWFsCiBQQVNTIE5v
bi16ZXJvIGluaXRpYWwKLUZBSUwgU3RyYXkgYXJndW1lbnQgV2ViQXNzZW1ibHkuTWVtb3J5IGV4
cGVjdHMgZXhhY3RseSBvbmUgYXJndW1lbnQKLUZBSUwgU2hhcmVkIG1lbW9yeSBhc3NlcnRfZXF1
YWxzOiBwcm90b3R5cGUgb2YgYnVmZmVyIGV4cGVjdGVkIG9iamVjdCAiW29iamVjdCBTaGFyZWRB
cnJheUJ1ZmZlcl0iIGJ1dCBnb3Qgb2JqZWN0ICJbb2JqZWN0IEFycmF5QnVmZmVyXSIKK1BBU1Mg
U3RyYXkgYXJndW1lbnQKK1BBU1MgU2hhcmVkIG1lbW9yeQogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2dy
b3cuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnktZXhwZWN0ZWQudHh0CmluZGV4IDQw
MDlmNmFlYjJmOGU3MGMxOGIwMDNmMDZmOGMwNzVhZjI0NDQ3NjMuLmE1ZGU2MGRkNjI4MDY2MzI1
MDdjZmZhYTU2NWEyZGFkODliN2NmMGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnktZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnktZXhwZWN0ZWQudHh0CkBAIC0xNyw1ICsxNyw1IEBA
IFBBU1MgT3V0LW9mLXJhbmdlIGFyZ3VtZW50OiA2ODcxOTQ3NjczNgogUEFTUyBPdXQtb2YtcmFu
Z2UgYXJndW1lbnQ6ICIweDEwMDAwMDAwMCIKIFBBU1MgT3V0LW9mLXJhbmdlIGFyZ3VtZW50OiBv
YmplY3QgIltvYmplY3QgT2JqZWN0XSIKIFBBU1MgU3RyYXkgYXJndW1lbnQKLUZBSUwgR3Jvd2lu
ZyBzaGFyZWQgbWVtb3J5IGRvZXMgbm90IGRldGFjaCBvbGQgYnVmZmVyIGFzc2VydF9lcXVhbHM6
IEJ1ZmZlciBiZWZvcmUgZ3Jvd2luZzogY29uc3RydWN0b3IgZXhwZWN0ZWQgdHJ1ZSBidXQgZ290
IGZhbHNlCitQQVNTIEdyb3dpbmcgc2hhcmVkIG1lbW9yeSBkb2VzIG5vdCBkZXRhY2ggb2xkIGJ1
ZmZlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2dyb3cuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVt
b3J5L2dyb3cuYW55Lndvcmtlci1leHBlY3RlZC50eHQKaW5kZXggNDAwOWY2YWViMmY4ZTcwYzE4
YjAwM2YwNmY4YzA3NWFmMjQ0NDc2My4uYTVkZTYwZGQ2MjgwNjYzMjUwN2NmZmFhNTY1YTJkYWQ4
OWI3Y2YwZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9ncm93LmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2Fw
aS9tZW1vcnkvZ3Jvdy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMTcsNSArMTcsNSBAQCBQ
QVNTIE91dC1vZi1yYW5nZSBhcmd1bWVudDogNjg3MTk0NzY3MzYKIFBBU1MgT3V0LW9mLXJhbmdl
IGFyZ3VtZW50OiAiMHgxMDAwMDAwMDAiCiBQQVNTIE91dC1vZi1yYW5nZSBhcmd1bWVudDogb2Jq
ZWN0ICJbb2JqZWN0IE9iamVjdF0iCiBQQVNTIFN0cmF5IGFyZ3VtZW50Ci1GQUlMIEdyb3dpbmcg
c2hhcmVkIG1lbW9yeSBkb2VzIG5vdCBkZXRhY2ggb2xkIGJ1ZmZlciBhc3NlcnRfZXF1YWxzOiBC
dWZmZXIgYmVmb3JlIGdyb3dpbmc6IGNvbnN0cnVjdG9yIGV4cGVjdGVkIHRydWUgYnV0IGdvdCBm
YWxzZQorUEFTUyBHcm93aW5nIHNoYXJlZCBtZW1vcnkgZG9lcyBub3QgZGV0YWNoIG9sZCBidWZm
ZXIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb2J1ZmZlci1pbnRlcmZhY2UvYXVk
aW9idWZmZXItY29weS1jaGFubmVsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9i
dWZmZXItaW50ZXJmYWNlL2F1ZGlvYnVmZmVyLWNvcHktY2hhbm5lbC1leHBlY3RlZC50eHQKaW5k
ZXggMDhkNTBmOGI1MWZlNzQwYTc2MDAxMjg2ZTQ5OWRiZGIwNWViZWI0Yi4uMzc5MzRmZWNmMzY5
NDE0YWZlZmZhNzY1ZjQ1OWRhYzhlMDRmMTljOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1h
dWRpb2J1ZmZlci1pbnRlcmZhY2UvYXVkaW9idWZmZXItY29weS1jaGFubmVsLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1
ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvYnVmZmVyLWludGVyZmFjZS9hdWRpb2J1ZmZlci1j
b3B5LWNoYW5uZWwtZXhwZWN0ZWQudHh0CkBAIC0xOSw5ICsxOSw5IEBAIFBBU1MgICA0OiBidWZm
ZXIuY29weUZyb21DaGFubmVsKHgsIDMpIHRocmV3IEluZGV4U2l6ZUVycm9yOiAiTm90IGEgdmFs
aWQgY2hhbm5lCiBQQVNTICAgNTogYnVmZmVyLmNvcHlGcm9tQ2hhbm5lbCh4LCAwLCAtMSkgZGlk
IG5vdCB0aHJvdyBhbiBleGNlcHRpb24uCiBQQVNTICAgNjogYnVmZmVyLmNvcHlGcm9tQ2hhbm5l
bCh4LCAwLCAxNikgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24uCiBQQVNTICAgNzogYnVmZmVy
LmNvcHlGcm9tQ2hhbm5lbCh4LCAzKSB0aHJldyBJbmRleFNpemVFcnJvcjogIk5vdCBhIHZhbGlk
IGNoYW5uZWxOdW1iZXIuIi4KLUZBSUwgWCA4OiBidWZmZXIuY29weUZyb21DaGFubmVsKFNoYXJl
ZEFycmF5QnVmZmVyIHZpZXcsIDApIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uLiBhc3NlcnRf
dHJ1ZTogZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgWCA5OiBidWZmZXIuY29weUZyb21D
aGFubmVsKFNoYXJlZEFycmF5QnVmZmVyIHZpZXcsIDAsIDApIGRpZCBub3QgdGhyb3cgYW4gZXhj
ZXB0aW9uLiBhc3NlcnRfdHJ1ZTogZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgPCBbY29w
eUZyb20tZXhjZXB0aW9uc10gMiBvdXQgb2YgMTEgYXNzZXJ0aW9ucyB3ZXJlIGZhaWxlZC4gYXNz
ZXJ0X3RydWU6IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitQQVNTICAgODogYnVmZmVyLmNvcHlG
cm9tQ2hhbm5lbChTaGFyZWRBcnJheUJ1ZmZlciB2aWV3LCAwKSB0aHJldyBUeXBlRXJyb3I6ICJB
cmd1bWVudCAxICgnZGVzdGluYXRpb24nKSB0byBBdWRpb0J1ZmZlci5jb3B5RnJvbUNoYW5uZWwg
bXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBGbG9hdDMyQXJyYXkiLgorUEFTUyAgIDk6IGJ1ZmZlci5j
b3B5RnJvbUNoYW5uZWwoU2hhcmVkQXJyYXlCdWZmZXIgdmlldywgMCwgMCkgdGhyZXcgVHlwZUVy
cm9yOiAiQXJndW1lbnQgMSAoJ2Rlc3RpbmF0aW9uJykgdG8gQXVkaW9CdWZmZXIuY29weUZyb21D
aGFubmVsIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgRmxvYXQzMkFycmF5Ii4KK1BBU1MgPCBbY29w
eUZyb20tZXhjZXB0aW9uc10gQWxsIGFzc2VydGlvbnMgcGFzc2VkLiAodG90YWwgMTEgYXNzZXJ0
aW9ucykKIFBBU1MgPiBbY29weVRvLWV4Y2VwdGlvbnNdCiBQQVNTICAgQXVkaW9CdWZmZXIucHJv
dG90eXBlLmNvcHlUb0NoYW5uZWwgZG9lcyBleGlzdC4KIFBBU1MgICAwOiBidWZmZXIuY29weVRv
Q2hhbm5lbChudWxsLCAwKSB0aHJldyBUeXBlRXJyb3I6ICJBcmd1bWVudCAxICgnc291cmNlJykg
dG8gQXVkaW9CdWZmZXIuY29weVRvQ2hhbm5lbCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEZsb2F0
MzJBcnJheSIuCkBAIC0zMSw5ICszMSw5IEBAIFBBU1MgICAzOiBidWZmZXIuY29weVRvQ2hhbm5l
bCh4LCAzKSB0aHJldyBJbmRleFNpemVFcnJvcjogIk5vdCBhIHZhbGlkIGNoYW5uZWxOCiBQQVNT
ICAgNDogYnVmZmVyLmNvcHlUb0NoYW5uZWwoeCwgMCwgLTEpIGRpZCBub3QgdGhyb3cgYW4gZXhj
ZXB0aW9uLgogUEFTUyAgIDU6IGJ1ZmZlci5jb3B5VG9DaGFubmVsKHgsIDAsIDE2KSBkaWQgbm90
IHRocm93IGFuIGV4Y2VwdGlvbi4KIFBBU1MgICA2OiBidWZmZXIuY29weVRvQ2hhbm5lbCh4LCAz
KSB0aHJldyBJbmRleFNpemVFcnJvcjogIk5vdCBhIHZhbGlkIGNoYW5uZWxOdW1iZXIuIi4KLUZB
SUwgWCA3OiBidWZmZXIuY29weVRvQ2hhbm5lbChTaGFyZWRBcnJheUJ1ZmZlciB2aWV3LCAwKSBk
aWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4gYXNzZXJ0X3RydWU6IGV4cGVjdGVkIHRydWUgZ290
IGZhbHNlCi1GQUlMIFggODogYnVmZmVyLmNvcHlUb0NoYW5uZWwoU2hhcmVkQXJyYXlCdWZmZXIg
dmlldywgMCwgMCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24uIGFzc2VydF90cnVlOiBleHBl
Y3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCA8IFtjb3B5VG8tZXhjZXB0aW9uc10gMiBvdXQgb2Yg
MTAgYXNzZXJ0aW9ucyB3ZXJlIGZhaWxlZC4gYXNzZXJ0X3RydWU6IGV4cGVjdGVkIHRydWUgZ290
IGZhbHNlCitQQVNTICAgNzogYnVmZmVyLmNvcHlUb0NoYW5uZWwoU2hhcmVkQXJyYXlCdWZmZXIg
dmlldywgMCkgdGhyZXcgVHlwZUVycm9yOiAiQXJndW1lbnQgMSAoJ3NvdXJjZScpIHRvIEF1ZGlv
QnVmZmVyLmNvcHlUb0NoYW5uZWwgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBGbG9hdDMyQXJyYXki
LgorUEFTUyAgIDg6IGJ1ZmZlci5jb3B5VG9DaGFubmVsKFNoYXJlZEFycmF5QnVmZmVyIHZpZXcs
IDAsIDApIHRocmV3IFR5cGVFcnJvcjogIkFyZ3VtZW50IDEgKCdzb3VyY2UnKSB0byBBdWRpb0J1
ZmZlci5jb3B5VG9DaGFubmVsIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgRmxvYXQzMkFycmF5Ii4K
K1BBU1MgPCBbY29weVRvLWV4Y2VwdGlvbnNdIEFsbCBhc3NlcnRpb25zIHBhc3NlZC4gKHRvdGFs
IDEwIGFzc2VydGlvbnMpCiBQQVNTID4gW2NvcHlGcm9tLXZhbGlkYXRlXQogUEFTUyAgIGJ1ZmZl
ci5jb3B5RnJvbUNoYW5uZWwoZHN0OCwgMCkgaXMgaWRlbnRpY2FsIHRvIHRoZSBhcnJheSBbMSwy
LDMsNCw1LDYsNyw4XS4KIFBBU1MgICBidWZmZXIuY29weUZyb21DaGFubmVsKGRzdDgsIDEpIGlz
IGlkZW50aWNhbCB0byB0aGUgYXJyYXkgWzIsMyw0LDUsNiw3LDgsOV0uCkBAIC02MCw1ICs2MCw1
IEBAIFBBU1MgICBidWZmZXIuY29weVRvQ2hhbm5lbChzcmMxMCwgMCwgNSkgaXMgaWRlbnRpY2Fs
IHRvIHRoZSBhcnJheSBbLTEsLTEsLTEsLTEsCiBQQVNTICAgYnVmZmVyLmNvcHlUb0NoYW5uZWwo
c3JjMTAsIDEsIDUpIGlzIGlkZW50aWNhbCB0byB0aGUgYXJyYXkgWy0xLC0xLC0xLC0xLC0xLDEs
MiwzLDQsNSw2LDcsOCw5LDEwLC0xLi4uXS4KIFBBU1MgICBidWZmZXIuY29weVRvQ2hhbm5lbChz
cmMxMCwgMiwgNSkgaXMgaWRlbnRpY2FsIHRvIHRoZSBhcnJheSBbLTEsLTEsLTEsLTEsLTEsMSwy
LDMsNCw1LDYsNyw4LDksMTAsLTEuLi5dLgogUEFTUyA8IFtjb3B5VG8tdmFsaWRhdGVdIEFsbCBh
c3NlcnRpb25zIHBhc3NlZC4gKHRvdGFsIDEwIGFzc2VydGlvbnMpCi1GQUlMICMgQVVESVQgVEFT
SyBSVU5ORVIgRklOSVNIRUQ6IDIgb3V0IG9mIDUgdGFza3Mgd2VyZSBmYWlsZWQuIGFzc2VydF90
cnVlOiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorUEFTUyAjIEFVRElUIFRBU0sgUlVOTkVSIEZJ
TklTSEVEOiA1IHRhc2tzIHJhbiBzdWNjZXNzZnVsbHkuCiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
Q2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjA5YjVmOGE1NjhjNDcyZTkwNGUy
OWIzYmRlYzJjZmUxZmZlYjI5Ny4uOTU4N2NmODI2ZjA3ZDJhOTgwOWVjOGQ5MDJiYTliN2M5ODZl
NWQ4NyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0xMS0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBXZWJBc3NlbWJseS5NZW1vcnkg
d2l0aCBzaGFyZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxODY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLWxvYWQtc2hhcmVkLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHdhc21GcmFtZUNvdW50RnJvbUVycm9yKToKKyAgICAgICAgKiB3YXNtL2Z1bmN0aW9u
LXRlc3RzL3RyYXAtc3RvcmUtc2hhcmVkLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL2pzLWFw
aS90ZXN0X21lbW9yeS5qczoKKyAgICAgICAgKGJpbmFyeVNob3VsZE5vdFBhcnNlKToKKyAgICAg
ICAgKiB3YXNtL3N0cmVzcy9zaGFyZWQtbWVtb3J5LWVycm9ycy5qczogQWRkZWQuCisgICAgICAg
IChhc3NlcnQudGhyb3dzKToKKyAgICAgICAgKiB3YXNtL3N0cmVzcy9zaGFyZWQtd2FzbS1tZW1v
cnktYnVmZmVyLmpzOiBBZGRlZC4KKwogMjAyMC0xMS0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHNraXAgbmV3IElDVSByZWxhdGVk
IHRlc3RzIGluIE1JUFMgYW5kIEFSTXY3IGFuZCBhZGp1c3QgaXQgZm9yIElDVSA2NQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtbG9hZC1zaGFyZWQuanMgYi9K
U1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLXNoYXJlZC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40OTg5MGE3YWFkNTdlNjQ4MjRkMTE0YmIyYTMxMTgwNjMyNDQwMTZiCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtbG9hZC1zaGFyZWQuanMKQEAg
LTAsMCArMSwzNCBAQAoraW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcycKK2ltcG9y
dCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnCisKK2NvbnN0IHBhZ2VTaXplID0gNjQg
KiAxMDI0OworY29uc3QgbnVtUGFnZXMgPSAxMDsKKworY29uc3QgYnVpbGRlciA9IChuZXcgQnVp
bGRlcigpKQorICAgIC5UeXBlKCkuRW5kKCkKKyAgICAuSW1wb3J0KCkKKyAgICAgICAgLk1lbW9y
eSgiYSIsICJiIiwge2luaXRpYWw6IG51bVBhZ2VzfSkKKyAgICAuRW5kKCkKKyAgICAuRnVuY3Rp
b24oKS5FbmQoKQorICAgIC5FeHBvcnQoKS5GdW5jdGlvbigiZm9vIikuRW5kKCkKKyAgICAuQ29k
ZSgpCisgICAgICAgIC5GdW5jdGlvbigiZm9vIiwge3BhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMy
In0pCisgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgIC5JMzJMb2FkKDIsIDAp
CisgICAgICAgICAgICAuUmV0dXJuKCkKKyAgICAgICAgLkVuZCgpCisgICAgLkVuZCgpOworCitj
b25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCk7Citjb25zdCBtb2R1bGUgPSBu
ZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7Citjb25zdCBmb28gPSBuZXcgV2ViQXNzZW1ibHku
SW5zdGFuY2UobW9kdWxlLCB7YToge2I6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6
IG51bVBhZ2VzLCBtYXhpbXVtOiBudW1QYWdlcyAqIDIsIHNoYXJlZDogdHJ1ZX0pfX0pLmV4cG9y
dHMuZm9vOworCitmdW5jdGlvbiB3YXNtRnJhbWVDb3VudEZyb21FcnJvcihlKSB7CisgICAgbGV0
IHN0YWNrRnJhbWVzID0gZS5zdGFjay5zcGxpdCgiXG4iKS5maWx0ZXIoKHMpID0+IHMuaW5kZXhP
Zigid2FzbS0iKSAhPT0gLTEpOworICAgIHJldHVybiBzdGFja0ZyYW1lcy5sZW5ndGg7Cit9CisK
K2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgY29uc3QgZSA9IGFzc2VydC50
aHJvd3MoKCkgPT4gZm9vKG51bVBhZ2VzICogcGFnZVNpemUgKyAxKSwgV2ViQXNzZW1ibHkuUnVu
dGltZUVycm9yLCAiT3V0IG9mIGJvdW5kcyBtZW1vcnkgYWNjZXNzIik7CisgICAgYXNzZXJ0LmVx
KHdhc21GcmFtZUNvdW50RnJvbUVycm9yKGUpLCAyKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
d2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLXN0b3JlLXNoYXJlZC5qcyBiL0pTVGVzdHMvd2FzbS9m
dW5jdGlvbi10ZXN0cy90cmFwLXN0b3JlLXNoYXJlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOGNhOWE4OTYz
ODM5MWJmMDRlZWRjYmI2YjdkM2ZjNTQxZTgxNGRhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtc3RvcmUtc2hhcmVkLmpzCkBAIC0wLDAgKzEsMjkg
QEAKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnCitpbXBvcnQgKiBhcyBhc3Nl
cnQgZnJvbSAnLi4vYXNzZXJ0LmpzJworCitjb25zdCBwYWdlU2l6ZSA9IDY0ICogMTAyNDsKK2Nv
bnN0IG51bVBhZ2VzID0gMTA7CisKK3sKKyAgICBjb25zdCBidWlsZGVyID0gKG5ldyBCdWlsZGVy
KCkpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkltcG9ydCgpCisgICAgICAgICAg
ICAuTWVtb3J5KCJhIiwgImIiLCB7aW5pdGlhbDogbnVtUGFnZXN9KQorICAgICAgICAuRW5kKCkK
KyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLkV4cG9ydCgpLkZ1bmN0aW9uKCJm
b28iKS5FbmQoKQorICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImZvbyIs
IHtwYXJhbXM6IFsiaTMyIiwgImkzMiJdfSkKKyAgICAgICAgICAgICAgICAuR2V0TG9jYWwoMSkK
KyAgICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgICAuSTMyU3RvcmUo
MiwgMCkKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAuRW5kKCk7CisKKyAgICBjb25zdCBi
aW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCk7CisgICAgY29uc3QgbW9kdWxlID0gbmV3
IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4pOworICAgIGNvbnN0IGZvbyA9IG5ldyBXZWJBc3NlbWJs
eS5JbnN0YW5jZShtb2R1bGUsIHthOiB7YjogbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlh
bDogbnVtUGFnZXMsIG1heGltdW06IG51bVBhZ2VzICogMiwgc2hhcmVkOiB0cnVlfSl9fSkuZXhw
b3J0cy5mb287CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspCisgICAgICAg
IGFzc2VydC50aHJvd3MoKCkgPT4gZm9vKGksIG51bVBhZ2VzICogcGFnZVNpemUgKyAxKSwgV2Vi
QXNzZW1ibHkuUnVudGltZUVycm9yLCAiT3V0IG9mIGJvdW5kcyBtZW1vcnkgYWNjZXNzIik7Cit9
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfbWVtb3J5LmpzIGIvSlNUZXN0
cy93YXNtL2pzLWFwaS90ZXN0X21lbW9yeS5qcwppbmRleCA1MjA1OTkyNzBjNTBiZGM4ZWMyYTVl
MWE1MTk1ZTFjY2NiMDljOTQ4Li43MGViZGUyODYyMzJlMTgxZjVlZGNjNTI5YWQyMGU0ZjZhMTUw
OTM1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfbWVtb3J5LmpzCisrKyBi
L0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9tZW1vcnkuanMKQEAgLTEyNCw3ICsxMjQsNyBAQCBm
dW5jdGlvbiBiaW5hcnlTaG91bGROb3RQYXJzZShidWlsZGVyKSB7CiAKIHsKICAgICBhc3NlcnQu
dGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoMjApLCBUeXBlRXJyb3IsICJXZWJB
c3NlbWJseS5NZW1vcnkgZXhwZWN0cyBpdHMgZmlyc3QgYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0
Iik7IAotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7fSwg
e30pLCBUeXBlRXJyb3IsICAiV2ViQXNzZW1ibHkuTWVtb3J5IGV4cGVjdHMgZXhhY3RseSBvbmUg
YXJndW1lbnQiKTsKKyAgICBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOjF9LCB7fSk7
CiB9CiAKIGZ1bmN0aW9uIHRlc3QoZikgewpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3N0cmVz
cy9zaGFyZWQtbWVtb3J5LWVycm9ycy5qcyBiL0pTVGVzdHMvd2FzbS9zdHJlc3Mvc2hhcmVkLW1l
bW9yeS1lcnJvcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGI5Y2VkNGIzZDFkMGQ1Yjk2ZDRiZmY5NzQwOTE2
MDcxNmU0YmE2OQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9zdHJlc3Mvc2hhcmVk
LW1lbW9yeS1lcnJvcnMuanMKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0ICogYXMgYXNzZXJ0IGZy
b20gJy4uL2Fzc2VydC5qcyc7CisKK2Fzc2VydC50aHJvd3MoKCkgPT4geworICAgIG5ldyBXZWJB
c3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAxLCBzaGFyZWQ6IHRydWUgfSk7Cit9LCBUeXBlRXJy
b3IsIGAnbWF4aW11bScgcGFnZSBjb3VudCBtdXN0IGJlIGRlZmluZWQgaWYgJ3NoYXJlZCcgaXMg
dHJ1ZWApOworCithc3NlcnQudGhyb3dzKCgpID0+IHsKKyAgICBsZXQgbWVtb3J5ID0gbmV3IFdl
YkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDEsIG1heGltdW06IDIsIHNoYXJlZDogdHJ1ZSB9
KTsKKyAgICBtZW1vcnkuZ3JvdygzKTsKK30sIFJhbmdlRXJvcnIsIGBXZWJBc3NlbWJseS5NZW1v
cnkuZ3JvdyB3b3VsZCBleGNlZWQgdGhlIG1lbW9yeSdzIGRlY2xhcmVkIG1heGltdW0gc2l6ZWAp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3N0cmVzcy9zaGFyZWQtd2FzbS1tZW1vcnktYnVm
ZmVyLmpzIGIvSlNUZXN0cy93YXNtL3N0cmVzcy9zaGFyZWQtd2FzbS1tZW1vcnktYnVmZmVyLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQ4OTYxM2M5MDkyNTU3MDQ1NmU5NTA4NDUxZTVlMWMwM2RlMTZlYzIKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vc3RyZXNzL3NoYXJlZC13YXNtLW1lbW9yeS1i
dWZmZXIuanMKQEAgLTAsMCArMSwyNCBAQAoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fz
c2VydC5qcycKKworbGV0IHBhZ2VTaXplID0gNjQgPDwgMTA7CitsZXQgbWVtb3J5ID0gbmV3IFdl
YkFzc2VtYmx5Lk1lbW9yeSh7CisgICAgaW5pdGlhbDogMSwKKyAgICBtYXhpbXVtOiA1LAorICAg
IHNoYXJlZDogdHJ1ZSwKK30pOworbGV0IGJ1ZmZlcjEgPSBtZW1vcnkuYnVmZmVyOworYXNzZXJ0
LmVxKGJ1ZmZlcjEuYnl0ZUxlbmd0aCwgcGFnZVNpemUgKiAxKTsKK2Fzc2VydC5lcShidWZmZXIx
LCBtZW1vcnkuYnVmZmVyKTsKKworbWVtb3J5Lmdyb3coMSk7CitsZXQgYnVmZmVyMiA9IG1lbW9y
eS5idWZmZXI7Cithc3NlcnQuZXEoYnVmZmVyMS5ieXRlTGVuZ3RoLCBwYWdlU2l6ZSAqIDEpOwor
YXNzZXJ0LmVxKGJ1ZmZlcjIuYnl0ZUxlbmd0aCwgcGFnZVNpemUgKiAyKTsKK2Fzc2VydC5mYWxz
eShidWZmZXIxID09PSBidWZmZXIyKTsKKworbGV0IGJ5dGVzMSA9IG5ldyBVaW50OEFycmF5KGJ1
ZmZlcjEpOworbGV0IGJ5dGVzMiA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcjIpOworYnl0ZXMxWzBd
ID0gNDI7Cithc3NlcnQuZXEoYnl0ZXMyWzBdLCA0Mik7CitieXRlczJbMF0gPSA0MzsKK2Fzc2Vy
dC5lcShieXRlczFbMF0sIDQzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414129</attachid>
            <date>2020-11-14 01:45:13 -0800</date>
            <delta_ts>2020-11-14 23:21:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218693-20201114014512.patch</filename>
            <type>text/plain</type>
            <size>162234</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZjBhYWIzMjBjNzJhMWYwNTViYTlmYTE4MjNmNTYzYjk0MmQ4NmE5Li4yOTdlYTdhNjYwOWU0ZDAy
YWNmMzU4MmJkYmJkYjRkMjU5MDVlZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OCBAQAorMjAyMC0xMS0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBXZWJBc3NlbWJseS5NZW1vcnkgd2l0aCBzaGFy
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODY5
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBsbGludC9MTEludFBDUmFuZ2VzLmg6CisgICAgICAgIChKU0M6
OkxMSW50Ojppc1dhc21MTEludFBDKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dG9XcmFwcGVkQWxsb3dTaGFyZWQpOgorICAgICAgICAq
IHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Om92ZXJyaWRlRGVmYXVsdHMpOgor
ICAgICAgICAoSlNDOjpPcHRpb25zOjppbml0aWFsaXplKToKKyAgICAgICAgKiB3YXNtL1dhc21B
aXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjpB
aXJJUkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjpyZXN0
b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZSk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2Vu
ZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5l
cmF0b3I6OmVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
QWlySVJHZW5lcmF0b3I6OmFkZENhbGwpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVy
YXRvcjo6YWRkQ2FsbEluZGlyZWN0KToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OnJlc3RvcmVXZWJBc3NlbWJseUds
b2JhbFN0YXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkQ3VycmVu
dE1lbW9yeSk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmVtaXRDaGVja0Fu
ZFByZXBhcmVQb2ludGVyKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRk
Q2FsbCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVj
dCk6CisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6CisgICAgICAgIChKU0M6Oldhc206
Ondhc21Ub1dhc20pOgorICAgICAgICAqIHdhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHA6
CisgICAgICAgIChKU0M6Oldhc206OnRyYXBIYW5kbGVyKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
ZW5hYmxlRmFzdE1lbW9yeSk6CisgICAgICAgIChKU0M6Oldhc206OnByZXBhcmVGYXN0TWVtb3J5
KToKKyAgICAgICAgKiB3YXNtL1dhc21JbnN0YW5jZS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpJ
bnN0YW5jZTo6Y2FjaGVkTWVtb3J5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFu
Y2U6OmNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206
Okluc3RhbmNlOjp1cGRhdGVDYWNoZWRNZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0
YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUpOgorICAgICAgICAoSlNDOjpX
YXNtOjpJbnN0YW5jZTo6Y2FjaGVkTWVtb3J5U2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Oldhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUpOiBEZWxldGVk
LgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeS5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok1l
bW9yeUhhbmRsZTo6TWVtb3J5SGFuZGxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5SGFu
ZGxlOjp+TWVtb3J5SGFuZGxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5OjpNZW1vcnkp
OgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Oldh
c206Ok1lbW9yeTo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5OjphZGRy
ZXNzSXNJbkFjdGl2ZUdyb3dhYmxlTWVtb3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5
Ojpncm93U2hhcmVkKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5Ojpncm93KToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6TWVtb3J5OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6
TWVtb3J5Ojp+TWVtb3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5Ojph
ZGRyZXNzSXNJbkFjdGl2ZUZhc3RNZW1vcnkpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2Fz
bU1lbW9yeS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmFkZHJlc3NJc0luQWN0aXZl
R3Jvd2FibGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Om9wZXJhdG9yIGJv
b2wgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Om1lbW9yeSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6c2l6ZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6c2l6ZUluUGFnZXMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmluaXRpYWwgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Om1heGltdW0gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Om1vZGUgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmNoZWNrKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6V2FzbTo6TWVtb3J5OjpvZmZzZXRPZk1lbW9yeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
Oldhc206Ok1lbW9yeTo6b2Zmc2V0T2ZTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2Fz
bTo6TWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUZhc3RNZW1vcnkpOiBEZWxldGVkLgorICAgICAg
ICAqIHdhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6
UGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5uZWRSZWdp
c3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5
SW5mb3JtYXRpb24uaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGlubmVkUmVnaXN0ZXJJbmZvOjp0
b1NhdmUgY29uc3QpOgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeU1vZGUuY3BwOgorICAgICAg
ICAoSlNDOjpXYXNtOjptYWtlU3RyaW5nKToKKyAgICAgICAgKiB3YXNtL1dhc21NZW1vcnlNb2Rl
Lmg6CisgICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206
OmNyZWF0ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5
SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnRyeUNy
ZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6YnVmZmVyKToKKyAgICAgICAgKEpTQzo6SlNX
ZWJBc3NlbWJseU1lbW9yeTo6Z3Jvd1N1Y2Nlc3NDYWxsYmFjayk6CisgICAgICAgICogd2FzbS9q
cy9KU1dlYkFzc2VtYmx5TWVtb3J5Lmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1
bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlGdW5jdGlvbjo6anNDYWxsRW50
cnlwb2ludFNsb3cpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3Nl
bWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkOjpldmFsdWF0ZSk6CisKIDIwMjAtMTEtMTMgIFNlcmdleSBSdWJhbm92ICA8Y2hpMTg3QGdt
YWlsLmNvbT4KIAogICAgICAgICBXZWJBc3NlbWJseTogb3Bjb2RlcyBmb3IgdGFibGUuZ3JvdyBh
bmQgdGFibGUuc2l6ZSBhcmUgbWl4ZWQgdXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZjQ2MTcwYWFlYjUyZWI1
YzhjNGNjMGZjY2EwODI4ZjcyYjZiNTAyLi42NjcxNzkyNWZmZWQwZDFmZmM2NTBkZjIyMmYxMjkw
ODhjOGU1MjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcgQEAKKzIwMjAtMTEtMTQgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQg
V2ViQXNzZW1ibHkuTWVtb3J5IHdpdGggc2hhcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbiBXZWJDb3JlLCB3ZSBuZWVkIHRocmVlIHRoaW5ncy4K
KworICAgICAgICAxLiBTaGFyZWQgV2ViQXNzZW1ibHkuTWVtb3J5IHNlcmlhbGl6YXRpb24vZGVz
ZXJpYWxpemF0aW9uCisKKyAgICAgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdHJ1Y3R1cmUtY2xv
bmluZyBmb3IgV2ViQXNzZW1ibHkuTWVtb3J5IHRvIHBhc3MgaXQgdG8gdGhlIG90aGVyIHdvcmtl
cnMuIENsb25pbmcgaXMgYXZhaWxhYmxlCisgICAgICAgICAgICBvbmx5IHdoZW4gdGhlIFdlYkFz
c2VtYmx5Lk1lbW9yeSBpcyBzaGFyZWQgbW9kZS4gQW5kIGl0IGlzIG9ubHkgYXZhaWxhYmxlIHdo
ZW4gd2UgYXJlIHVzaW5nIGl0IGluIHBvc3RNZXNzYWdlLgorICAgICAgICAgICAgU28gd2UgY2Fu
bm90IHN0b3JlIFdlYkFzc2VtYmx5Lk1lbW9yeSBpbiBJbmRleGVkREIuCisKKyAgICAgICAgMi4g
V2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyOjppc0F0b21pY3NXYWl0QWxsb3dlZE9uQ3VycmVu
dFRocmVhZAorCisgICAgICAgICAgICBBdG9taWNzLndhaXQgaXMgdXNhYmxlIG9ubHkgaW4gV29y
a2VycywgYW5kICpub3QqIHVzYWJsZSBpbiBTZXJ2aWNlIFdvcmtlcnMuIFdoZW4gY3JlYXRpbmcg
Vk0sIHdlIHBhc3MgV29ya2VyVGhyZWFkVHlwZQorICAgICAgICAgICAgYW5kIG1ha2UgV2ViQ29y
ZVR5cGVkQXJyYXlDb250cm9sbGVyOjppc0F0b21pY3NXYWl0QWxsb3dlZE9uQ3VycmVudFRocmVh
ZCByZXR1cm4gYXBwcm9wcmlhdGUgdmFsdWUuCisKKyAgICAgICAgMy4gW0FsbG93U2hhcmVkXSBz
dXBwb3J0IGZvciBXUFQKKworICAgICAgICAgICAgV1BUIHRlc3RzIGZvciB0aGlzIGFyZSBicm9r
ZW4sIGFuZCB0ZXN0cyBhcmUgc2F5aW5nICJQQVNTIiB3aGlsZSB0aGUgZmVhdHVyZSBpcyBub3Qg
aW1wbGVtZW50ZWQgYXQgYWxsLgorICAgICAgICAgICAgTm93LCB0aGUgZmVhdHVyZSBpcyBhY3R1
YWxseSBpbXBsZW1lbnRlZCwgYW5kIFdQVCB0ZXN0cyBzdGFydCBzaG93aW5nIHRoYXQgW0FsbG93
U2hhcmVkXSBhbm5vdGF0aW9uIGluIElETAorICAgICAgICAgICAgaXMgbm90IGltcGxlbWVudGVk
LiBbQWxsb3dTaGFyZWRdIGlzIHRoYXQsIHVzdWFsbHksIERPTSBkb2VzIG5vdCBhY2NlcHQgVHlw
ZWRBcnJheSBvcmlnaW5hdGVkIGZyb20gU2hhcmVkQXJyYXlCdWZmZXIuCisgICAgICAgICAgICBl
LmcuIGVuY29kZUludG8oLi4uLCBVaW50OEFycmF5KSBET00gSURMIHRocm93cyBhbiBlcnJvciBp
ZiBVaW50OEFycmF5IGlzIGJhY2tlZCBieSBTaGFyZWRBcnJheUJ1ZmZlci4KKyAgICAgICAgICAg
IEJ1dCBpbiB0aGUgbGltaXRlZCBwbGFjZXMsIHdlIGFyZSBleHBsaWNpdGx5IGFsbG93aW5nIHRo
aXMuIFRoaXMgaXMgW0FsbG93U2hhcmVkXSBhbm5vdGF0aW9uLgorICAgICAgICAgICAgVGhpcyBw
YXRjaCBpbXBsZW1lbnRzIHRoYXQgc28gdGhhdCB3ZSBrZWVwIHBhc3NpbmcgVGV4dEVuY29kZXIg
LyBUZXh0RGVjb2RlciB0ZXN0cy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VyaWFsaXphdGlvbkNvbnRleHQ6Omlu
aXRpYWxpemVWTSk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJpbmRpbmdzL0lETFR5cGVzLmg6CisgICAgICAgICogYmluZGluZ3MvanMv
Q29tbW9uVk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tbW9uVk1TbG93KToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRCdWZmZXJTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyOjpjb252ZXJ0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnZlcnRlcjxJRExBcnJheUJ1ZmZlcj46OmNvbnZlcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udmVydGVyPElETERhdGFWaWV3Pjo6Y29udmVydCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb252ZXJ0ZXI8SURMSW50OEFycmF5Pjo6Y29udmVydCk6CisgICAgICAgIChXZWJDb3JlOjpD
b252ZXJ0ZXI8SURMSW50MTZBcnJheT46OmNvbnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dmVydGVyPElETEludDMyQXJyYXk+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZl
cnRlcjxJRExVaW50OEFycmF5Pjo6Y29udmVydCk6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0
ZXI8SURMVWludDE2QXJyYXk+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZlcnRl
cjxJRExVaW50MzJBcnJheT46OmNvbnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udmVydGVy
PElETFVpbnQ4Q2xhbXBlZEFycmF5Pjo6Y29udmVydCk6CisgICAgICAgIChXZWJDb3JlOjpDb252
ZXJ0ZXI8SURMRmxvYXQzMkFycmF5Pjo6Y29udmVydCk6CisgICAgICAgIChXZWJDb3JlOjpDb252
ZXJ0ZXI8SURMRmxvYXQ2NEFycmF5Pjo6Y29udmVydCk6CisgICAgICAgIChXZWJDb3JlOjpDb252
ZXJ0ZXI8SURMQXJyYXlCdWZmZXJWaWV3Pjo6Y29udmVydCk6CisgICAgICAgIChXZWJDb3JlOjpD
b252ZXJ0ZXI8SURMQWxsb3dTaGFyZWRBZGFwdG9yPFQ+Pjo6Y29udmVydCk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01Db252ZXJ0VW5pb24uaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxp
emVyOjpzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpDbG9u
ZVNlcmlhbGl6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSWZU
ZXJtaW5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OkNsb25lRGVzZXJpYWxp
emVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkVGVybWluYWwp
OgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjb21w
dXRlTWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmRlc2VyaWFsaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29ybGQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyOjpXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyOjppc0F0b21p
Y3NXYWl0QWxsb3dlZE9uQ3VycmVudFRocmVhZCk6CisgICAgICAgICogYmluZGluZ3MvanMvV2Vi
Q29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChJc0Fubm90YXRlZFR5cGUpOgorICAgICAgICAo
R2V0QW5ub3RhdGVkSURMVHlwZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRy
aWJ1dGVzLmpzb246CisgICAgICAgICogZG9tL1RleHREZWNvZGVyLmlkbDoKKyAgICAgICAgKiBk
b20vVGV4dEVuY29kZXIuaWRsOgorICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGU6OkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjpX
b3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5o
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU6Oldvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6
Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
VGhyZWFkVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKiB3b3JrbGV0cy9X
b3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNj
b3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUpOgorCiAyMDIwLTExLTEzICBDbGF1ZGlvIFNhYXZlZHJh
ICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgTm9uLXVuaWZpZWQgYnVpbGQgZml4
ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMzhhZTZjZTExYTg5YmIy
Y2E2NTdjNThjZjgyZDdlNDc1MThhOTk1MS4uMDUzM2E4MWZkOTYxMzdiZTk2MDdjNjdmMjNlMjAz
MTljZjQwMTYwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTA4OCw2
ICsxMDg4LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMK
ICAgICB3YXNtL1dhc21UaWVyVXBDb3VudC5oCiAKICAgICB3YXNtL2pzL0pTV2ViQXNzZW1ibHku
aAorICAgIHdhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5oCiAgICAgd2FzbS9qcy9KU1dlYkFz
c2VtYmx5TW9kdWxlLmgKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMwZWVm
MGJjMzBlMDJjZDg3NmM5MzEyZDcxZWQ2ZTAxMjdkM2U0NTguLmJjMDNjNzhjYjExODFmZjIyMzlh
ZTFiMTFkM2Y0NGM4ZWE0ZmQ4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
NTc0LDcgKzE1NzQsNyBAQAogCQlBRDAwNjU5RTFFQ0FDODEyMDAwQ0E5MjYgLyogV2FzbUxpbWl0
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQwMDY1
OUQxRUNBQzdGRTAwMENBOTI2IC8qIFdhc21MaW1pdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBRDJGQ0JFMzFEQjU4REFEMDBCM0U3MzYgLyog
SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQTcxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1i
bHlDb21waWxlRXJyb3IuaCAqLzsgfTsKIAkJQUQyRkNCRTUxREI1OERBRDAwQjNFNzM2IC8qIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUQyRkNCQTkxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZS5oICovOyB9OwotCQlBRDJGQ0JFNzFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJs
eU1lbW9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QUQyRkNCQUIxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNZW1vcnkuaCAqLzsgfTsK
KwkJQUQyRkNCRTcxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNZW1vcnkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkFCMURCNThE
QTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5TWVtb3J5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQUQyRkNCRTkxREI1OERBRDAwQjNFNzM2IC8q
IEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkFEMURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2Vt
Ymx5UnVudGltZUVycm9yLmggKi87IH07CiAJCUFEMkZDQkVCMURCNThEQUQwMEIzRTczNiAvKiBK
U1dlYkFzc2VtYmx5VGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEFEMkZDQkFGMURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5VGFibGUu
aCAqLzsgfTsKIAkJQUQyRkNCRUQxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGls
ZUVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEFEMkZDQkIxMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVF
cnJvckNvbnN0cnVjdG9yLmggKi87IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRQQ1Jhbmdlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50UENSYW5nZXMuaAppbmRleCA0NGY0ZWY5MTAzZDdlMjE2Mjk1OWRmYTU2ODJlYTZjYjFiNTI4
NzEzLi42NGIyZGU4OTI0ZTg3MWQ5NGZiYWNkYTJmZDEwZDg4MjdhYjIwYzA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRQQ1Jhbmdlcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFBDUmFuZ2VzLmgKQEAgLTM1LDYgKzM1LDEwIEBA
IG5hbWVzcGFjZSBMTEludCB7CiBleHRlcm4gIkMiIHsKICAgICB2b2lkIGxsaW50UENSYW5nZVN0
YXJ0KCk7CiAgICAgdm9pZCBsbGludFBDUmFuZ2VFbmQoKTsKKyNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCisgICAgdm9pZCB3YXNtTExJbnRQQ1JhbmdlU3RhcnQoKTsKKyAgICB2b2lkIHdhc21MTElu
dFBDUmFuZ2VFbmQoKTsKKyNlbmRpZgogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNMTEludFBD
KHZvaWQqIHBjKQpAQCAtNDYsNiArNTAsMTcgQEAgQUxXQVlTX0lOTElORSBib29sIGlzTExJbnRQ
Qyh2b2lkKiBwYykKICAgICByZXR1cm4gbGxpbnRTdGFydCA8PSBwY0FzSW50ICYmIHBjQXNJbnQg
PD0gbGxpbnRFbmQ7CiB9CiAKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCitBTFdBWVNfSU5MSU5F
IGJvb2wgaXNXYXNtTExJbnRQQyh2b2lkKiBwYykKK3sKKyAgICB1aW50cHRyX3QgcGNBc0ludCA9
IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHBjKTsKKyAgICB1aW50cHRyX3Qgc3RhcnQgPSB1bnRh
Z0NvZGVQdHI8dWludHB0cl90LCBDRnVuY3Rpb25QdHJUYWc+KHdhc21MTEludFBDUmFuZ2VTdGFy
dCk7CisgICAgdWludHB0cl90IGVuZCA9IHVudGFnQ29kZVB0cjx1aW50cHRyX3QsIENGdW5jdGlv
blB0clRhZz4od2FzbUxMSW50UENSYW5nZUVuZCk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3RhcnQg
PCBlbmQpOworICAgIHJldHVybiBzdGFydCA8PSBwY0FzSW50ICYmIHBjQXNJbnQgPD0gZW5kOwor
fQorI2VuZGlmCisKICNpZiAhRU5BQkxFKENfTE9PUCkKIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IExMSW50UEMgPSBHUFJJbmZvOjpyZWdUNDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDgzZTI0YTA4MjEw
Yjk1ZWI4NzAwM2JjZWUxNjgzYTA5OGE4ZjQ4NjcuLmJlZDVjZGY1ZTJhOTM0MjI3NDIxODdkMDMz
YmFkZjBmMzVhZTA0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTI0NjcsNyArMjQ2NywxMiBAQCBtYWNybyB3YXNt
U2NvcGUoKQogICAgICMgYnV0IHdlIGRvbid0IHdhbnQgdG8gaW50ZXJmZXJlIHdpdGggdGhlIExM
SW50IG9wY29kZXMKICAgICBpbmNsdWRlIFdlYkFzc2VtYmx5CiBlbmQKKworZ2xvYmFsIF93YXNt
TExJbnRQQ1JhbmdlU3RhcnQKK193YXNtTExJbnRQQ1JhbmdlU3RhcnQ6CiB3YXNtU2NvcGUoKQor
Z2xvYmFsIF93YXNtTExJbnRQQ1JhbmdlRW5kCitfd2FzbUxMSW50UENSYW5nZUVuZDoKIAogZWxz
ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHku
YXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQppbmRleCA4
YmZmYzhhNjk3ZDJlNmU0ZjIwZGU5NjQwNWE1ZjNkMjRmOGExZWJjLi5kZjhiYmZhMWQ0NzQwNGI3
MDdiN2RjZGZjOWJkM2ZmNmZlMzI5MWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9XZWJBc3NlbWJseS5hc20KQEAgLTQ1LDcgKzQ1LDcgQEAgY29uc3QgTnVtYmVyT2ZXYXNtQXJn
dW1lbnRzID0gTnVtYmVyT2ZXYXNtQXJndW1lbnRHUFJzICsgTnVtYmVyT2ZXYXNtQXJndW1lbnRG
UFIKICMgVGhlc2UgbXVzdCBtYXRjaCB0aGUgZGVmaW5pdGlvbiBpbiBXYXNtTWVtb3J5SW5mb3Jt
YXRpb24uY3BwCiBjb25zdCB3YXNtSW5zdGFuY2UgPSBjc3IwCiBjb25zdCBtZW1vcnlCYXNlID0g
Y3NyMwotY29uc3QgbWVtb3J5U2l6ZSA9IGNzcjQKK2NvbnN0IGJvdW5kc0NoZWNraW5nU2l6ZSA9
IGNzcjQKIAogIyBUaGlzIG11c3QgbWF0Y2ggdGhlIGRlZmluaXRpb24gaW4gTG93TGV2ZWxJbnRl
cnByZXRlci5hc20KIGlmIFg4Nl82NApAQCAtMTg3LDcgKzE4Nyw3IEBAIGVuZAogIyBXYXNtIHNw
ZWNpZmljIGhlbHBlcnMKIAogbWFjcm8gcHJlc2VydmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQot
ICAgICMgTk9URTogV2UgaW50ZW50aW9uYWxseSBkb24ndCBzYXZlIG1lbW9yeUJhc2UgYW5kIG1l
bW9yeVNpemUgaGVyZS4gU2VlIHRoZSBjb21tZW50CisgICAgIyBOT1RFOiBXZSBpbnRlbnRpb25h
bGx5IGRvbid0IHNhdmUgbWVtb3J5QmFzZSBhbmQgYm91bmRzQ2hlY2tpbmdTaXplIGhlcmUuIFNl
ZSB0aGUgY29tbWVudAogICAgICMgaW4gcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgpIGJl
bG93IGZvciB3aHkuCiAgICAgc3VicCBDYWxsZWVTYXZlU3BhY2VTdGFja0FsaWduZWQsIHNwCiAg
ICAgaWYgQVJNNjQgb3IgQVJNNjRFCkBAIC0yMDEsNyArMjAxLDcgQEAgbWFjcm8gcHJlc2VydmVD
YWxsZWVTYXZlc1VzZWRCeVdhc20oKQogZW5kCiAKIG1hY3JvIHJlc3RvcmVDYWxsZWVTYXZlc1Vz
ZWRCeVdhc20oKQotICAgICMgTk9URTogV2UgaW50ZW50aW9uYWxseSBkb24ndCByZXN0b3JlIG1l
bW9yeUJhc2UgYW5kIG1lbW9yeVNpemUgaGVyZS4gVGhlc2UgYXJlIHNhdmVkCisgICAgIyBOT1RF
OiBXZSBpbnRlbnRpb25hbGx5IGRvbid0IHJlc3RvcmUgbWVtb3J5QmFzZSBhbmQgYm91bmRzQ2hl
Y2tpbmdTaXplIGhlcmUuIFRoZXNlIGFyZSBzYXZlZAogICAgICMgYW5kIHJlc3RvcmVkIHdoZW4g
ZW50ZXJpbmcgV2FzbSBieSB0aGUgSlNUb1dhc20gd3JhcHBlciBhbmQgY2hhbmdlcyB0byB0aGVt
IGFyZSBtZWFudAogICAgICMgdG8gYmUgb2JzZXJ2YWJsZSB3aXRoaW4gdGhlIHNhbWUgV2FzbSBt
b2R1bGUuCiAgICAgaWYgQVJNNjQgb3IgQVJNNjRFCkBAIC0yNDAsOCArMjQwLDggQEAgZW5kCiAK
IG1hY3JvIHJlbG9hZE1lbW9yeVJlZ2lzdGVyc0Zyb21JbnN0YW5jZShpbnN0YW5jZSwgc2NyYXRj
aDEsIHNjcmF0Y2gyKQogICAgIGxvYWRwIFdhc206Okluc3RhbmNlOjptX2NhY2hlZE1lbW9yeVtp
bnN0YW5jZV0sIG1lbW9yeUJhc2UKLSAgICBsb2FkaSBXYXNtOjpJbnN0YW5jZTo6bV9jYWNoZWRN
ZW1vcnlTaXplW2luc3RhbmNlXSwgbWVtb3J5U2l6ZQotICAgIGNhZ2VkUHJpbWl0aXZlKG1lbW9y
eUJhc2UsIG1lbW9yeVNpemUsIHNjcmF0Y2gxLCBzY3JhdGNoMikKKyAgICBsb2FkaSBXYXNtOjpJ
bnN0YW5jZTo6bV9jYWNoZWRCb3VuZHNDaGVja2luZ1NpemVbaW5zdGFuY2VdLCBib3VuZHNDaGVj
a2luZ1NpemUKKyAgICBjYWdlZFByaW1pdGl2ZShtZW1vcnlCYXNlLCBib3VuZHNDaGVja2luZ1Np
emUsIHNjcmF0Y2gxLCBzY3JhdGNoMikKIGVuZAogCiBtYWNybyB0aHJvd0V4Y2VwdGlvbihleGNl
cHRpb24pCkBAIC04NTYsNyArODU2LDkgQEAgd2FzbU9wKGNhbGxfaW5kaXJlY3Rfbm9fdGxzLCBX
YXNtQ2FsbEluZGlyZWN0Tm9UbHMsIG1hY3JvKGN0eCkKIGVuZCkKIAogd2FzbU9wKGN1cnJlbnRf
bWVtb3J5LCBXYXNtQ3VycmVudE1lbW9yeSwgbWFjcm8oY3R4KQotICAgIGxvYWRwIFdhc206Oklu
c3RhbmNlOjptX2NhY2hlZE1lbW9yeVNpemVbd2FzbUluc3RhbmNlXSwgdDAKKyAgICBsb2FkcCBX
YXNtOjpJbnN0YW5jZTo6bV9tZW1vcnlbd2FzbUluc3RhbmNlXSwgdDAKKyAgICBsb2FkcCBXYXNt
OjpNZW1vcnk6Om1faGFuZGxlW3QwXSwgdDAKKyAgICBsb2FkcCBXYXNtOjpNZW1vcnlIYW5kbGU6
Om1fc2l6ZVt0MF0sIHQwCiAgICAgdXJzaGlmdHEgMTYsIHQwCiAgICAgcmV0dXJucShjdHgsIHQw
KQogZW5kKQpAQCAtODc0LDcgKzg3Niw3IEBAIGVuZCkKICMgdXNlcyBvZmZzZXQgYXMgc2NyYXRj
aCBhbmQgcmV0dXJucyByZXN1bHQgb24gcG9pbnRlcgogbWFjcm8gZW1pdENoZWNrQW5kUHJlcGFy
ZVBvaW50ZXIoY3R4LCBwb2ludGVyLCBvZmZzZXQsIHNpemUpCiAgICAgbGVhcCBzaXplIC0gMVtw
b2ludGVyLCBvZmZzZXRdLCB0NQotICAgIGJwYiB0NSwgbWVtb3J5U2l6ZSwgLmNvbnRpbnVhdGlv
bgorICAgIGJwYiB0NSwgYm91bmRzQ2hlY2tpbmdTaXplLCAuY29udGludWF0aW9uCiAgICAgdGhy
b3dFeGNlcHRpb24oT3V0T2ZCb3VuZHNNZW1vcnlBY2Nlc3MpCiAuY29udGludWF0aW9uOgogICAg
IGFkZHAgbWVtb3J5QmFzZSwgcG9pbnRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggZThjMzFkODA3MDA5
Nzc5NWE0ZDA0YjA0M2UzMjlhNDZiNjM4MjM5Ny4uY2ViNDg1MWFjYTJjN2UxZDIxNDUwNTM0ODZi
YTUyMGI1ODRjNGMyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0yODcsNiArMjg3LDggQEAgY2xhc3Mg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcgZmluYWwgOiBwdWJsaWMgSlNBcnJheUJ1ZmZlclZpZXcg
ewogCiAgICAgLy8gVGhpcyBpcyB0aGUgZGVmYXVsdCBET00gdW53cmFwcGluZy4gSXQgY2FsbHMg
dG9VbnNoYXJlZE5hdGl2ZVR5cGVkVmlldygpLgogICAgIHN0YXRpYyBSZWZQdHI8dHlwZW5hbWUg
QWRhcHRvcjo6Vmlld1R5cGU+IHRvV3JhcHBlZChWTSYsIEpTVmFsdWUpOworICAgIC8vIFtBbGxv
d1NoYXJlZF0gYW5ub3RhdGlvbiBhbGxvd3MgYWNjZXB0aW5nIFR5cGVkQXJyYXkgb3JpZ2luYXRl
ZCBmcm9tIFNoYXJlZEFycmF5QnVmZmVyLgorICAgIHN0YXRpYyBSZWZQdHI8dHlwZW5hbWUgQWRh
cHRvcjo6Vmlld1R5cGU+IHRvV3JhcHBlZEFsbG93U2hhcmVkKFZNJiwgSlNWYWx1ZSk7CiAgICAg
CiBwcml2YXRlOgogICAgIGZyaWVuZCBzdHJ1Y3QgVHlwZWRBcnJheUNsYXNzSW5mb3M7CkBAIC0z
OTIsNCArMzk0LDExIEBAIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRvV3JhcHBlZChWCiAgICAgcmV0dXJuIEpTQzo6
dG9VbnNoYXJlZE5hdGl2ZVR5cGVkVmlldzxBZGFwdG9yPih2bSwgdmFsdWUpOwogfQogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgorUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBl
PiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dG9XcmFwcGVkQWxsb3dTaGFyZWQo
Vk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIHJldHVybiBKU0M6OnRvUG9zc2libHlTaGFy
ZWROYXRpdmVUeXBlZFZpZXc8QWRhcHRvcj4odm0sIHZhbHVlKTsKK30KKworCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKaW5kZXgg
OTU4OTg5YzkyM2E0ZmFjYmY2NTc1Y2RkZjlmMTJlZDVlYWUxOGYyOC4uYzI3YjE1NmIxOWIwMGY0
OWJjNmUwYjk4ZjA4NDZhYjA2MjM4MGZmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5jcHAKQEAgLTM2Nyw2ICszNjcsNyBAQCBzdGF0aWMgdm9pZCBvdmVycmlkZURl
ZmF1bHRzKCkKIAogI2lmICFFTkFCTEUoV0VCQVNTRU1CTFlfRkFTVF9NRU1PUlkpCiAgICAgT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCkgPSBmYWxzZTsKKyAgICBPcHRpb25zOjp1
c2VTaGFyZWRBcnJheUJ1ZmZlcigpID0gZmFsc2U7CiAjZW5kaWYKIAogI2lmICFIQVZFKE1BQ0hf
RVhDRVBUSU9OUykKQEAgLTY1OSwxMyArNjYwLDE0IEBAIHZvaWQgT3B0aW9uczo6aW5pdGlhbGl6
ZSgpCiAjZW5kaWYKIAogI2lmIEFTQU5fRU5BQkxFRCAmJiBPUyhMSU5VWCkgJiYgRU5BQkxFKFdF
QkFTU0VNQkxZX0ZBU1RfTUVNT1JZKQotICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFz
c2VtYmx5RmFzdE1lbW9yeSgpKSB7CisgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNz
ZW1ibHlGYXN0TWVtb3J5KCkgfHwgT3B0aW9uczo6dXNlU2hhcmVkQXJyYXlCdWZmZXIoKSkgewog
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFzYW5PcHRpb25zID0gZ2V0ZW52KCJBU0FOX09Q
VElPTlMiKTsKICAgICAgICAgICAgICAgICBib29sIG9rVG9Vc2VXZWJBc3NlbWJseUZhc3RNZW1v
cnkgPSBhc2FuT3B0aW9ucwogICAgICAgICAgICAgICAgICAgICAmJiAoc3Ryc3RyKGFzYW5PcHRp
b25zLCAiYWxsb3dfdXNlcl9zZWd2X2hhbmRsZXI9MSIpIHx8IHN0cnN0cihhc2FuT3B0aW9ucywg
ImhhbmRsZV9zZWd2PTAiKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFva1RvVXNlV2ViQXNzZW1i
bHlGYXN0TWVtb3J5KSB7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiV0FSTklORzog
QVNBTiBpbnRlcmZlcmVzIHdpdGggSlNDIHNpZ25hbCBoYW5kbGVyczsgdXNlV2ViQXNzZW1ibHlG
YXN0TWVtb3J5IHdpbGwgYmUgZGlzYWJsZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2dMbigiV0FSTklORzogQVNBTiBpbnRlcmZlcmVzIHdpdGggSlNDIHNpZ25hbCBoYW5kbGVyczsg
dXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5IGFuZCB1c2VTaGFyZWRBcnJheUJ1ZmZlciB3aWxsIGJl
IGRpc2FibGVkLiIpOwogICAgICAgICAgICAgICAgICAgICBPcHRpb25zOjp1c2VXZWJBc3NlbWJs
eUZhc3RNZW1vcnkoKSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBPcHRpb25zOjp1c2VT
aGFyZWRBcnJheUJ1ZmZlcigpID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklS
R2VuZXJhdG9yLmNwcAppbmRleCA0M2QwYzg3MmVlNGM2M2I0ZDU2YjZmMGUzNDYyMzUzMzNlODRi
NzkzLi5mMDM3ZGExMzM5ZDM3YzJiYmFlM2E5ZWI4Y2YzMDY1NGYxMjIyMzc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTY4
MCw3ICs2ODAsNyBAQCBjbGFzcyBBaXJJUkdlbmVyYXRvciB7CiAgICAgVmVjdG9yPFR5cGVkVG1w
PiBtX2xvY2FsczsKICAgICBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIG1fdW5saW5r
ZWRXYXNtVG9XYXNtQ2FsbHM7IC8vIExpc3QgZWFjaCBjYWxsIHNpdGUgYW5kIHRoZSBmdW5jdGlv
biBpbmRleCB3aG9zZSBhZGRyZXNzIGl0IHNob3VsZCBiZSBwYXRjaGVkIHdpdGguCiAgICAgR1BS
UmVnIG1fbWVtb3J5QmFzZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKLSAgICBHUFJSZWcgbV9tZW1v
cnlTaXplR1BSIHsgSW52YWxpZEdQUlJlZyB9OworICAgIEdQUlJlZyBtX2JvdW5kc0NoZWNraW5n
U2l6ZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKICAgICBHUFJSZWcgbV93YXNtQ29udGV4dEluc3Rh
bmNlR1BSIHsgSW52YWxpZEdQUlJlZyB9OwogICAgIGJvb2wgbV9tYWtlc0NhbGxzIHsgZmFsc2Ug
fTsKIApAQCAtNzcyLDggKzc3Miw4IEBAIEFpcklSR2VuZXJhdG9yOjpBaXJJUkdlbmVyYXRvcihj
b25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgQjM6OlByb2NlZHVyZSYgcHJvCiAgICAgICAg
IG1fY29kZS5waW5SZWdpc3RlcihtX3dhc21Db250ZXh0SW5zdGFuY2VHUFIpOwogCiAgICAgaWYg
KG1vZGUgIT0gTWVtb3J5TW9kZTo6U2lnbmFsaW5nKSB7Ci0gICAgICAgIG1fbWVtb3J5U2l6ZUdQ
UiA9IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyOwotICAgICAgICBtX2NvZGUucGluUmVnaXN0ZXIo
bV9tZW1vcnlTaXplR1BSKTsKKyAgICAgICAgbV9ib3VuZHNDaGVja2luZ1NpemVHUFIgPSBwaW5u
ZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyOworICAgICAgICBtX2NvZGUucGluUmVn
aXN0ZXIobV9ib3VuZHNDaGVja2luZ1NpemVHUFIpOwogICAgIH0KIAogICAgIG1fY29kZS5zZXRO
dW1FbnRyeXBvaW50cygxKTsKQEAgLTkxOCw3ICs5MTgsNyBAQCB2b2lkIEFpcklSR2VuZXJhdG9y
OjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVkU3RhY2tMaW1pdCBy
ZXN0bwogICAgICAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8qIHBpbm5lZFJlZ3MgPSAmUGlu
bmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKICAgICAgICAgUmVnaXN0ZXJTZXQgY2xvYmJlcnM7CiAg
ICAgICAgIGNsb2JiZXJzLnNldChwaW5uZWRSZWdzLT5iYXNlTWVtb3J5UG9pbnRlcik7Ci0gICAg
ICAgIGNsb2JiZXJzLnNldChwaW5uZWRSZWdzLT5zaXplUmVnaXN0ZXIpOworICAgICAgICBjbG9i
YmVycy5zZXQocGlubmVkUmVncy0+Ym91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIpOwogICAgICAg
ICBpZiAoIWlzQVJNNjQoKSkKICAgICAgICAgICAgIGNsb2JiZXJzLnNldChSZWdpc3RlclNldDo6
bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogCkBAIC05MzMsMTIgKzkzMywxMiBAQCB2b2lkIEFp
cklSR2VuZXJhdG9yOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVk
U3RhY2tMaW1pdCByZXN0bwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoW3Bpbm5l
ZFJlZ3NdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICBHUFJSZWcgYmFzZU1lbW9yeSA9IHBp
bm5lZFJlZ3MtPmJhc2VNZW1vcnlQb2ludGVyOwotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hP
clNpemUgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUpID8gcGFyYW1z
LmdwU2NyYXRjaCgwKSA6IHBpbm5lZFJlZ3MtPnNpemVSZWdpc3RlcjsKKyAgICAgICAgICAgIEdQ
UlJlZyBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdp
Z2FjYWdlOjpQcmltaXRpdmUpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IHBpbm5lZFJlZ3MtPmJv
dW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyOwogCi0gICAgICAgICAgICBqaXQubG9hZFB0cihDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MocGFyYW1zWzBdLmdwcigpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNo
ZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLT5zaXplUmVnaXN0ZXIpOworICAgICAgICAgICAg
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhcmFtc1swXS5ncHIoKSwgSW5zdGFu
Y2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkpLCBwaW5uZWRSZWdzLT5ib3Vu
ZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7CiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MocGFyYW1zWzBdLmdwcigpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRN
ZW1vcnkoKSksIGJhc2VNZW1vcnkpOwogCi0gICAgICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFs
bHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgcGlubmVkUmVncy0+c2l6ZVJlZ2lz
dGVyLCBzY3JhdGNoT3JTaXplKTsKKyAgICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShH
aWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLT5ib3VuZHNDaGVja2lu
Z1NpemVSZWdpc3Rlciwgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplKTsKICAgICAgICAgfSk7
CiAKICAgICAgICAgZW1pdFBhdGNocG9pbnQoYmxvY2ssIHBhdGNocG9pbnQsIFRtcCgpLCBpbnN0
YW5jZSk7CkBAIC0xMTY4LDggKzExNjgsMTIgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ3Vy
cmVudE1lbW9yeShFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAg
YXV0byB0ZW1wMSA9IGc2NCgpOwogICAgIGF1dG8gdGVtcDIgPSBnNjQoKTsKIAotICAgIFJFTEVB
U0VfQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1l
bW9yeVNpemUoKSwgQjM6OldpZHRoNjQpKTsKLSAgICBhcHBlbmQoTW92ZSwgQXJnOjphZGRyKGlu
c3RhbmNlVmFsdWUoKSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSwgdGVt
cDEpOworICAgIFJFTEVBU0VfQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEluc3RhbmNlOjpv
ZmZzZXRPZk1lbW9yeSgpLCBCMzo6V2lkdGg2NCkpOworICAgIFJFTEVBU0VfQVNTRVJUKEFyZzo6
aXNWYWxpZEFkZHJGb3JtKE1lbW9yeTo6b2Zmc2V0T2ZIYW5kbGUoKSwgQjM6OldpZHRoNjQpKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChBcmc6OmlzVmFsaWRBZGRyRm9ybShNZW1vcnlIYW5kbGU6Om9m
ZnNldE9mU2l6ZSgpLCBCMzo6V2lkdGg2NCkpOworICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIo
aW5zdGFuY2VWYWx1ZSgpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSksIHRlbXAxKTsKKyAg
ICBhcHBlbmQoTW92ZSwgQXJnOjphZGRyKHRlbXAxLCBNZW1vcnk6Om9mZnNldE9mSGFuZGxlKCkp
LCB0ZW1wMSk7CisgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcih0ZW1wMSwgTWVtb3J5SGFuZGxl
OjpvZmZzZXRPZlNpemUoKSksIHRlbXAxKTsKICAgICBjb25zdGV4cHIgdWludDMyX3Qgc2hpZnRW
YWx1ZSA9IDE2OwogICAgIHN0YXRpY19hc3NlcnQoUGFnZUNvdW50OjpwYWdlU2l6ZSA9PSAxdWxs
IDw8IHNoaWZ0VmFsdWUsICJUaGlzIG11c3QgaG9sZCBmb3IgdGhlIGNvZGUgYmVsb3cgdG8gYmUg
Y29ycmVjdC4iKTsKICAgICBhcHBlbmQoTW92ZSwgQXJnOjppbW0oMTYpLCB0ZW1wMik7CkBAIC0x
MzYzLDE1ICsxMzY3LDE2IEBAIGlubGluZSBBaXJJUkdlbmVyYXRvcjo6RXhwcmVzc2lvblR5cGUg
QWlySVJHZW5lcmF0b3I6OmVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyCiAKICAgICBzd2l0Y2gg
KG1fbW9kZSkgewogICAgIGNhc2UgTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmc6IHsKLSAgICAg
ICAgLy8gV2UncmUgbm90IHVzaW5nIHNpZ25hbCBoYW5kbGluZyBhdCBhbGwsIHdlIG11c3QgdGhl
cmVmb3JlIGNoZWNrIHRoYXQgbm8gbWVtb3J5IGFjY2VzcyBleGNlZWRzIHRoZSBjdXJyZW50IG1l
bW9yeSBzaXplLgotICAgICAgICBBU1NFUlQobV9tZW1vcnlTaXplR1BSKTsKKyAgICAgICAgLy8g
SW4gYm91bmQgY2hlY2tpbmcgbW9kZSwgd2hpbGUgc2hhcmVkIHdhc20gbWVtb3J5IHBhcnRpYWxs
eSByZWxpZXMgb24gc2lnbmFsIGhhbmRsZXIgdG9vLCB3ZSBuZWVkIHRvIHBlcmZvcm0gYm91bmQg
Y2hlY2tpbmcKKyAgICAgICAgLy8gdG8gZW5zdXJlIHRoYXQgbm8gbWVtb3J5IGFjY2VzcyBleGNl
ZWRzIHRoZSBjdXJyZW50IG1lbW9yeSBzaXplLgorICAgICAgICBBU1NFUlQobV9ib3VuZHNDaGVj
a2luZ1NpemVHUFIpOwogICAgICAgICBBU1NFUlQoc2l6ZU9mT3BlcmF0aW9uICsgb2Zmc2V0ID4g
b2Zmc2V0KTsKICAgICAgICAgYXV0byB0ZW1wID0gZzY0KCk7CiAgICAgICAgIGFwcGVuZChNb3Zl
LCBBcmc6OmJpZ0ltbShzdGF0aWNfY2FzdDx1aW50NjRfdD4oc2l6ZU9mT3BlcmF0aW9uKSArIG9m
ZnNldCAtIDEpLCB0ZW1wKTsKICAgICAgICAgYXBwZW5kKEFkZDY0LCByZXN1bHQsIHRlbXApOwog
CiAgICAgICAgIGVtaXRDaGVjayhbJl0gewotICAgICAgICAgICAgcmV0dXJuIEluc3QoQnJhbmNo
NjQsIG51bGxwdHIsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsKSwg
dGVtcCwgVG1wKG1fbWVtb3J5U2l6ZUdQUikpOworICAgICAgICAgICAgcmV0dXJuIEluc3QoQnJh
bmNoNjQsIG51bGxwdHIsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFs
KSwgdGVtcCwgVG1wKG1fYm91bmRzQ2hlY2tpbmdTaXplR1BSKSk7CiAgICAgICAgIH0sIFs9XSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7
CiAgICAgICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBl
OjpPdXRPZkJvdW5kc01lbW9yeUFjY2Vzcyk7CiAgICAgICAgIH0pOwpAQCAtMjE1NCw3ICsyMTU5
LDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4
LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwKICAgICAgICAgYXV0byogcGF0Y2hwb2ludCA9
IGVtaXRDYWxsUGF0Y2hwb2ludChtX2N1cnJlbnRCbG9jaywgc2lnbmF0dXJlLCByZXN1bHRzLCBh
cmdzKTsKICAgICAgICAgLy8gV2UgbmVlZCB0byBjbG9iYmVyIHRoZSBzaXplIHJlZ2lzdGVyIHNp
bmNlIHRoZSBMTEludCBhbHdheXMgYm91bmRzIGNoZWNrcwogICAgICAgICBpZiAobV9tb2RlID09
IE1lbW9yeU1vZGU6OlNpZ25hbGluZykKLSAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJM
YXRlKFJlZ2lzdGVyU2V0IHsgUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS5zaXplUmVnaXN0ZXIg
fSk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldCB7IFBp
bm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgfSk7CiAg
ICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMs
IGZ1bmN0aW9uSW5kZXhdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBj
YWxsID0gaml0LnRocmVhZFNhZmVQYXRjaGFibGVOZWFyQ2FsbCgpOwpAQCAtMjI3OCwxMyArMjI4
MywxMyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFi
bGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYQogICAgICAgICAgICAgaml0LnN0b3JlV2Fz
bUNvbnRleHRJbnN0YW5jZShuZXdDb250ZXh0SW5zdGFuY2UpOwogICAgICAgICAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBzdXBwb3J0IG1vcmUgdGhhbiBvbmUgbWVtb3J5IHNpemUgcmVnaXN0ZXIK
ICAgICAgICAgICAgIC8vICAgc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYyOTUyCi0gICAgICAgICAgICBBU1NFUlQocGlubmVkUmVncy5zaXplUmVnaXN0ZXIg
IT0gbmV3Q29udGV4dEluc3RhbmNlKTsKLSAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoT3JTaXpl
ID0gR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IHBhcmFtcy5ncFNj
cmF0Y2goMCkgOiBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcjsKKyAgICAgICAgICAgIEFTU0VSVChw
aW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyICE9IG5ld0NvbnRleHRJbnN0YW5j
ZSk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplID0gR2ln
YWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IHBhcmFtcy5ncFNjcmF0Y2go
MCkgOiBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyOwogCi0gICAgICAgICAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobmV3Q29udGV4dEluc3RhbmNlLCBJ
bnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLnNpemVSZWdp
c3Rlcik7IC8vIE1lbW9yeSBzaXplLgorICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKG5ld0NvbnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVk
Qm91bmRzQ2hlY2tpbmdTaXplKCkpLCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lz
dGVyKTsgLy8gQm91bmQgY2hlY2tpbmcgc2l6ZS4KICAgICAgICAgICAgIGppdC5sb2FkUHRyKEND
YWxsSGVscGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRP
ZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7IC8vIE1lbW9yeTo6dm9pZCouCiAKLSAgICAg
ICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVt
b3J5LCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlciwgc2NyYXRjaE9yU2l6ZSk7CisgICAgICAgICAg
ICBqaXQuY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwg
cGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlciwgc2NyYXRjaE9yQm91bmRzQ2hl
Y2tpbmdTaXplKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgZW1pdFBhdGNocG9pbnQoZG9Db250
ZXh0U3dpdGNoLCBwYXRjaHBvaW50LCBUbXAoKSwgbmV3Q29udGV4dEluc3RhbmNlLCBpbnN0YW5j
ZVZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIz
SVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwCmluZGV4IDMwYjNjNzcyMzJmMmRlZTVmNDU5M2E0YmM4OTk1NjU3ZjEzOThkZmIu
Ljk2ZjNhYWNmOTZiNDIyMDExOGViY2ZlOGUxYzE4NWMyZDdmM2VjZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTMyNSw3ICsz
MjUsNyBAQCBjbGFzcyBCM0lSR2VuZXJhdG9yIHsKICAgICBJbnNlcnRpb25TZXQgbV9jb25zdGFu
dEluc2VydGlvblZhbHVlczsKICAgICBWYWx1ZSogbV9mcmFtZVBvaW50ZXIgeyBudWxscHRyIH07
CiAgICAgR1BSUmVnIG1fbWVtb3J5QmFzZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKLSAgICBHUFJS
ZWcgbV9tZW1vcnlTaXplR1BSIHsgSW52YWxpZEdQUlJlZyB9OworICAgIEdQUlJlZyBtX2JvdW5k
c0NoZWNraW5nU2l6ZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKICAgICBHUFJSZWcgbV93YXNtQ29u
dGV4dEluc3RhbmNlR1BSIHsgSW52YWxpZEdQUlJlZyB9OwogICAgIGJvb2wgbV9tYWtlc0NhbGxz
IHsgZmFsc2UgfTsKIApAQCAtNDA4LDggKzQwOCw4IEBAIEIzSVJHZW5lcmF0b3I6OkIzSVJHZW5l
cmF0b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFByb2NlZHVyZSYgcHJvY2VkdXJl
CiAgICAgICAgIG1fcHJvYy5waW5SZWdpc3RlcihtX3dhc21Db250ZXh0SW5zdGFuY2VHUFIpOwog
CiAgICAgaWYgKG1vZGUgIT0gTWVtb3J5TW9kZTo6U2lnbmFsaW5nKSB7Ci0gICAgICAgIG1fbWVt
b3J5U2l6ZUdQUiA9IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyOwotICAgICAgICBtX3Byb2MucGlu
UmVnaXN0ZXIobV9tZW1vcnlTaXplR1BSKTsKKyAgICAgICAgbV9ib3VuZHNDaGVja2luZ1NpemVH
UFIgPSBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyOworICAgICAgICBtX3By
b2MucGluUmVnaXN0ZXIobV9ib3VuZHNDaGVja2luZ1NpemVHUFIpOwogICAgIH0KIAogICAgIGlm
IChpbmZvLm1lbW9yeSkgewpAQCAtNDE3LDcgKzQxNyw3IEBAIEIzSVJHZW5lcmF0b3I6OkIzSVJH
ZW5lcmF0b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFByb2NlZHVyZSYgcHJvY2Vk
dXJlCiAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3Jh
dGNoKGppdCk7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fbW9kZSkgewogICAgICAgICAgICAgY2Fz
ZSBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZzoKLSAgICAgICAgICAgICAgICBBU1NFUlRfVU5V
U0VEKHBpbm5lZEdQUiwgbV9tZW1vcnlTaXplR1BSID09IHBpbm5lZEdQUik7CisgICAgICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChwaW5uZWRHUFIsIG1fYm91bmRzQ2hlY2tpbmdTaXplR1BSID09
IHBpbm5lZEdQUik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIE1l
bW9yeU1vZGU6OlNpZ25hbGluZzoKICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHBpbm5l
ZEdQUiwgSW52YWxpZEdQUlJlZyA9PSBwaW5uZWRHUFIpOwpAQCAtNTQ1LDcgKzU0NSw3IEBAIHZv
aWQgQjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoUmVzdG9yZUNh
Y2hlZFN0YWNrTGltaXQgcmVzdG9yCiAgICAgICAgIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyog
cGlubmVkUmVncyA9ICZQaW5uZWRSZWdpc3RlckluZm86OmdldCgpOwogICAgICAgICBSZWdpc3Rl
clNldCBjbG9iYmVyczsKICAgICAgICAgY2xvYmJlcnMuc2V0KHBpbm5lZFJlZ3MtPmJhc2VNZW1v
cnlQb2ludGVyKTsKLSAgICAgICAgY2xvYmJlcnMuc2V0KHBpbm5lZFJlZ3MtPnNpemVSZWdpc3Rl
cik7CisgICAgICAgIGNsb2JiZXJzLnNldChwaW5uZWRSZWdzLT5ib3VuZHNDaGVja2luZ1NpemVS
ZWdpc3Rlcik7CiAgICAgICAgIGlmICghaXNBUk02NCgpKQogICAgICAgICAgICAgY2xvYmJlcnMu
c2V0KFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAKQEAgLTU2MSwxMiAr
NTYxLDEyIEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3Rh
dGUoUmVzdG9yZUNhY2hlZFN0YWNrTGltaXQgcmVzdG9yCiAgICAgICAgIHBhdGNocG9pbnQtPnNl
dEdlbmVyYXRvcihbcGlubmVkUmVnc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgIEdQUlJl
ZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy0+YmFzZU1lbW9yeVBvaW50ZXI7Ci0gICAgICAgICAg
ICBHUFJSZWcgc2NyYXRjaE9yU2l6ZSA9IEdpZ2FjYWdlOjppc0VuYWJsZWQoR2lnYWNhZ2U6OlBy
aW1pdGl2ZSkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogcGlubmVkUmVncy0+c2l6ZVJlZ2lzdGVy
OworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSA9IEdpZ2Fj
YWdlOjppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyBwYXJhbXMuZ3BTY3JhdGNoKDAp
IDogcGlubmVkUmVncy0+Ym91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXI7CiAKLSAgICAgICAgICAg
IGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCksIEluc3Rh
bmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBpbm5lZFJlZ3MtPnNpemVSZWdpc3Rl
cik7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFyYW1z
WzBdLmdwcigpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSks
IHBpbm5lZFJlZ3MtPmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsKICAgICAgICAgICAgIGpp
dC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCksIEluc3RhbmNl
OjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7CiAKLSAgICAgICAgICAgIGpp
dC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5u
ZWRSZWdzLT5zaXplUmVnaXN0ZXIsIHNjcmF0Y2hPclNpemUpOworICAgICAgICAgICAgaml0LmNh
Z2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJl
Z3MtPmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1Np
emUpOwogICAgICAgICB9KTsKICAgICB9CiB9CkBAIC03OTMsNyArNzkzLDkgQEAgYXV0byBCM0lS
R2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBlIGRlbHRhLCBFeHByZXNzaW9u
VHlwZSYgcmVzdWx0KQogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBzdGF0aWNfYXNzZXJ0
KHNpemVvZihkZWNsdHlwZShzdGF0aWNfY2FzdDxNZW1vcnkqPihudWxscHRyKS0+c2l6ZSgpKSkg
PT0gc2l6ZW9mKHVpbnQ2NF90KSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOwotICAg
IFZhbHVlKiBzaXplID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9w
cm9jLCBMb2FkLCBJbnQ2NCwgb3JpZ2luKCksIGluc3RhbmNlVmFsdWUoKSwgc2FmZUNhc3Q8aW50
MzJfdD4oSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSk7CisgICAgVmFsdWUq
IG1lbW9yeSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywg
TG9hZCwgSW50NjQsIG9yaWdpbigpLCBpbnN0YW5jZVZhbHVlKCksIHNhZmVDYXN0PGludDMyX3Q+
KEluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSk7CisgICAgVmFsdWUqIGhhbmRsZSA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50NjQsIG9y
aWdpbigpLCBtZW1vcnksIHNhZmVDYXN0PGludDMyX3Q+KE1lbW9yeTo6b2Zmc2V0T2ZIYW5kbGUo
KSkpOworICAgIFZhbHVlKiBzaXplID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQ2NCwgb3JpZ2luKCksIGhhbmRsZSwgc2FmZUNhc3Q8aW50
MzJfdD4oTWVtb3J5SGFuZGxlOjpvZmZzZXRPZlNpemUoKSkpOwogCiAgICAgY29uc3RleHByIHVp
bnQzMl90IHNoaWZ0VmFsdWUgPSAxNjsKICAgICBzdGF0aWNfYXNzZXJ0KFBhZ2VDb3VudDo6cGFn
ZVNpemUgPT0gMXVsbCA8PCBzaGlmdFZhbHVlLCAiVGhpcyBtdXN0IGhvbGQgZm9yIHRoZSBjb2Rl
IGJlbG93IHRvIGJlIGNvcnJlY3QuIik7CkBAIC05NTQsOSArOTU2LDkgQEAgaW5saW5lIFZhbHVl
KiBCM0lSR2VuZXJhdG9yOjplbWl0Q2hlY2tBbmRQcmVwYXJlUG9pbnRlcihFeHByZXNzaW9uVHlw
ZSBwb2ludGVyLAogICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgY2FzZSBNZW1vcnlNb2RlOjpC
b3VuZHNDaGVja2luZzogewogICAgICAgICAvLyBXZSdyZSBub3QgdXNpbmcgc2lnbmFsIGhhbmRs
aW5nIGF0IGFsbCwgd2UgbXVzdCB0aGVyZWZvcmUgY2hlY2sgdGhhdCBubyBtZW1vcnkgYWNjZXNz
IGV4Y2VlZHMgdGhlIGN1cnJlbnQgbWVtb3J5IHNpemUuCi0gICAgICAgIEFTU0VSVChtX21lbW9y
eVNpemVHUFIpOworICAgICAgICBBU1NFUlQobV9ib3VuZHNDaGVja2luZ1NpemVHUFIpOwogICAg
ICAgICBBU1NFUlQoc2l6ZU9mT3BlcmF0aW9uICsgb2Zmc2V0ID4gb2Zmc2V0KTsKLSAgICAgICAg
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxXYXNtQm91bmRzQ2hlY2tWYWx1ZT4obV9wcm9jLCBv
cmlnaW4oKSwgbV9tZW1vcnlTaXplR1BSLCBwb2ludGVyLCBzaXplT2ZPcGVyYXRpb24gKyBvZmZz
ZXQgLSAxKTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxXYXNtQm91bmRzQ2hl
Y2tWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgbV9ib3VuZHNDaGVja2luZ1NpemVHUFIsIHBvaW50
ZXIsIHNpemVPZk9wZXJhdGlvbiArIG9mZnNldCAtIDEpOwogICAgICAgICBicmVhazsKICAgICB9
CiAKQEAgLTE3MTAsNyArMTcxMiw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50
MzJfdCBmdW5jdGlvbkluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwKIAogICAgICAg
ICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2xvYmJlciB0aGUgc2l6ZSByZWdpc3RlciBzaW5jZSB0
aGUgTExJbnQgYWx3YXlzIGJvdW5kcyBjaGVja3MKICAgICAgICAgICAgICAgICBpZiAobV9tb2Rl
ID09IE1lbW9yeU1vZGU6OlNpZ25hbGluZykKLSAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXQgeyBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnNp
emVSZWdpc3RlciB9KTsKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxh
dGUoUmVnaXN0ZXJTZXQgeyBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLmJvdW5kc0NoZWNraW5n
U2l6ZVJlZ2lzdGVyIH0pOwogICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cihbdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIGZ1bmN0aW9uSW5kZXhdIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OwogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC50aHJl
YWRTYWZlUGF0Y2hhYmxlTmVhckNhbGwoKTsKQEAgLTE4MzEsMTYgKzE4MzMsMTYgQEAgYXV0byBC
M0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3Qg
U2lnbmF0dXJlJiBzaWduYXQKICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6
QWRkcmVzcyhvbGRDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZFN0YWNr
TGltaXQoKSksIGJhc2VNZW1vcnkpOwogICAgICAgICAgICAgaml0LnN0b3JlUHRyKGJhc2VNZW1v
cnksIENDYWxsSGVscGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpv
ZmZzZXRPZkNhY2hlZFN0YWNrTGltaXQoKSkpOwogICAgICAgICAgICAgaml0LnN0b3JlV2FzbUNv
bnRleHRJbnN0YW5jZShuZXdDb250ZXh0SW5zdGFuY2UpOwotICAgICAgICAgICAgQVNTRVJUKHBp
bm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyICE9IGJhc2VNZW1vcnkpOworICAgICAgICAgICAgQVNTRVJU
KHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgIT0gYmFzZU1lbW9yeSk7CiAg
ICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBtZW1v
cnkgc2l6ZSByZWdpc3RlcgogICAgICAgICAgICAgLy8gICBzZWU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKLSAgICAgICAgICAgIEFTU0VSVChwaW5uZWRS
ZWdzLnNpemVSZWdpc3RlciAhPSBuZXdDb250ZXh0SW5zdGFuY2UpOwotICAgICAgICAgICAgR1BS
UmVnIHNjcmF0Y2hPclNpemUgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRp
dmUpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyOworICAg
ICAgICAgICAgQVNTRVJUKHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgIT0g
bmV3Q29udGV4dEluc3RhbmNlKTsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoT3JCb3VuZHND
aGVja2luZ1NpemUgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUpID8g
cGFyYW1zLmdwU2NyYXRjaCgwKSA6IHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0
ZXI7CiAKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhuZXdD
b250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBp
bm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyKTsgLy8gTWVtb3J5IHNpemUuCisgICAgICAgICAgICBqaXQu
bG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobmV3Q29udGV4dEluc3RhbmNlLCBJbnN0YW5j
ZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSksIHBpbm5lZFJlZ3MuYm91bmRz
Q2hlY2tpbmdTaXplUmVnaXN0ZXIpOyAvLyBNZW1vcnkgc2l6ZS4KICAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNl
OjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7IC8vIE1lbW9yeTo6dm9pZCou
CiAKLSAgICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZl
LCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlciwgc2NyYXRjaE9yU2l6ZSk7Cisg
ICAgICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFz
ZU1lbW9yeSwgcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlciwgc2NyYXRjaE9y
Qm91bmRzQ2hlY2tpbmdTaXplKTsKICAgICAgICAgfSk7CiAgICAgICAgIGRvQ29udGV4dFN3aXRj
aC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywgSnVtcCwgb3JpZ2luKCksIGNvbnRpbnVh
dGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5k
aW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAppbmRl
eCA5NDFkMDE2MzdjY2M5MDI3YmIzMDk0ZjlmMmNjY2IyZTZjZDMxYTkyLi42NTc1OWE3Y2MwOTU0
ZDZhYjc1OWViNGE4YThjMTUxOTRjYjljYWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUJpbmRpbmcuY3BwCkBAIC00OSw5ICs0OSw5IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvV2FzbSh1
bnNpCiAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVy
OwogICAgIEFTU0VSVChiYXNlTWVtb3J5ICE9IEdQUlJlZzo6SW52YWxpZEdQUlJlZyk7CiAgICAg
QVNTRVJUKGJhc2VNZW1vcnkgIT0gc2NyYXRjaCk7Ci0gICAgQVNTRVJUKHBpbm5lZFJlZ3Muc2l6
ZVJlZ2lzdGVyICE9IGJhc2VNZW1vcnkpOwotICAgIEFTU0VSVChwaW5uZWRSZWdzLnNpemVSZWdp
c3RlciAhPSBzY3JhdGNoKTsKLSAgICBHUFJSZWcgc2l6ZVJlZ0FzU2NyYXRjaCA9IHBpbm5lZFJl
Z3Muc2l6ZVJlZ2lzdGVyOworICAgIEFTU0VSVChwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6
ZVJlZ2lzdGVyICE9IGJhc2VNZW1vcnkpOworICAgIEFTU0VSVChwaW5uZWRSZWdzLmJvdW5kc0No
ZWNraW5nU2l6ZVJlZ2lzdGVyICE9IHNjcmF0Y2gpOworICAgIEdQUlJlZyBzaXplUmVnQXNTY3Jh
dGNoID0gcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlcjsKICAgICBBU1NFUlQo
c2l6ZVJlZ0FzU2NyYXRjaCAhPSBHUFJSZWc6OkludmFsaWRHUFJSZWcpOwogCiAgICAgLy8gQjMn
cyBjYWxsIGNvZGVnZW4gZW5zdXJlcyB0aGF0IHRoZSBKU0NlbGwgaXMgYSBXZWJBc3NlbWJseUZ1
bmN0aW9uLgpAQCAtNjgsMTEgKzY4LDExIEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvV2FzbSh1bnNpCiAgICAg
Ly8gRklYTUUgdGhlIGZvbGxvd2luZyBjb2RlIGFzc3VtZXMgdGhhdCBhbGwgV2FzbTo6SW5zdGFu
Y2UgaGF2ZSB0aGUgc2FtZSBwaW5uZWQgcmVnaXN0ZXJzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTUyCiAgICAgLy8gU2V0IHVwIHRoZSBjYWxsZWUncyBiYXNl
TWVtb3J5IHJlZ2lzdGVyIGFzIHdlbGwgYXMgdGhlIG1lbW9yeSBzaXplIHJlZ2lzdGVycy4KICAg
ICB7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoT3JTaXplID0gIUdpZ2FjYWdlOjppc0VuYWJsZWQo
R2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyBwaW5uZWRSZWdzLnNpemVSZWdpc3RlciA6IHdhc21DYWxs
aW5nQ29udmVudGlvbigpLnByb2xvZ3VlU2NyYXRjaEdQUnNbMV07CisgICAgICAgIEdQUlJlZyBz
Y3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUgPSAhR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2Fn
ZTo6UHJpbWl0aXZlKSA/IHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgOiB3
YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5wcm9sb2d1ZVNjcmF0Y2hHUFJzWzFdOwogCi0gICAgICAg
IGppdC5sb2FkUHRyKEpJVDo6QWRkcmVzcyhiYXNlTWVtb3J5LCBXYXNtOjpJbnN0YW5jZTo6b2Zm
c2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlcik7IC8vIE1l
bW9yeSBzaXplLgorICAgICAgICBqaXQubG9hZFB0cihKSVQ6OkFkZHJlc3MoYmFzZU1lbW9yeSwg
V2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkpLCBwaW5u
ZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsgLy8gQm91bmQgY2hlY2tpbmcgc2l6
ZS4KICAgICAgICAgaml0LmxvYWRQdHIoSklUOjpBZGRyZXNzKGJhc2VNZW1vcnksIFdhc206Oklu
c3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7IC8vIFdhc206Ok1l
bW9yeTo6VGFnZ2VkQXJyYXlTdG9yYWdlUHRyPHZvaWQ+ICh2b2lkKikuCi0gICAgICAgIGppdC5j
YWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRS
ZWdzLnNpemVSZWdpc3Rlciwgc2NyYXRjaE9yU2l6ZSk7CisgICAgICAgIGppdC5jYWdlQ29uZGl0
aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLmJvdW5k
c0NoZWNraW5nU2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOwogICAg
IH0KIAogICAgIC8vIFRhaWwgY2FsbCBpbnRvIHRoZSBjYWxsZWUgV2ViQXNzZW1ibHkgZnVuY3Rp
b24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWdu
YWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25h
bEhhbmRsZXIuY3BwCmluZGV4IDNlYTAwODg5MDFiNmMyN2NmNjViMGI0NzRkZDhkYzk1Yzc4MTUx
ZmYuLjA0YzM0YjdlOGFlNmQ3ZGU2YWE5YWY0MDkzNmE4YzNlMmE1NzRjNGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3Bw
CkBAIC02MywyOSArNjMsNDAgQEAgc3RhdGljIFNpZ25hbEFjdGlvbiB0cmFwSGFuZGxlcihTaWdu
YWwsIFNpZ0luZm8mIHNpZ0luZm8sIFBsYXRmb3JtUmVnaXN0ZXJzJiBjb24KICAgICBkYXRhTG9n
TG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJzdGFydGluZyBo
YW5kbGVyIGZvciBmYXVsdCBhdDogIiwgUmF3UG9pbnRlcihmYXVsdGluZ0luc3RydWN0aW9uKSk7
CiAKICAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJv
c2UsICJKSVQgbWVtb3J5IHN0YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0T2ZGaXhlZEV4ZWN1dGFi
bGVNZW1vcnlQb29sKCkpLCAiIGVuZDogIiwgUmF3UG9pbnRlcihlbmRPZkZpeGVkRXhlY3V0YWJs
ZU1lbW9yeVBvb2woKSkpOwotICAgIC8vIEZpcnN0IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGFy
ZSBpbiBKSVQgY29kZSBiZWZvcmUgd2UgY2FuIGFxdWlyZSBhbnkgbG9ja3MuIE90aGVyd2lzZSwK
KyAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2Us
ICJXYXNtTExJbnQgbWVtb3J5IHN0YXJ0OiAiLCBSYXdQb2ludGVyKHVudGFnQ29kZVB0cjx2b2lk
KiwgQ0Z1bmN0aW9uUHRyVGFnPihMTEludDo6d2FzbUxMSW50UENSYW5nZVN0YXJ0KSksICIgZW5k
OiAiLCBSYXdQb2ludGVyKHVudGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnPihMTElu
dDo6d2FzbUxMSW50UENSYW5nZUVuZCkpKTsKKyAgICAvLyBGaXJzdCB3ZSBuZWVkIHRvIG1ha2Ug
c3VyZSB3ZSBhcmUgaW4gSklUIGNvZGUgb3IgV2FzbSBMTEludCBjb2RlIGJlZm9yZSB3ZSBjYW4g
YXF1aXJlIGFueSBsb2Nrcy4gT3RoZXJ3aXNlLAogICAgIC8vIHdlIG1pZ2h0IGhhdmUgY3Jhc2hl
ZCBpbiBjb2RlIHRoYXQgaXMgYWxyZWFkeSBob2xkaW5nIG9uZSBvZiB0aGUgbG9ja3Mgd2Ugd2Fu
dCB0byBhcXVpcmUuCiAgICAgYXNzZXJ0SXNOb3RUYWdnZWQoZmF1bHRpbmdJbnN0cnVjdGlvbik7
Ci0gICAgaWYgKGlzSklUUEMoZmF1bHRpbmdJbnN0cnVjdGlvbikpIHsKLSAgICAgICAgYm9vbCBm
YXVsdGVkSW5BY3RpdmVGYXN0TWVtb3J5ID0gZmFsc2U7CisgICAgaWYgKGlzSklUUEMoZmF1bHRp
bmdJbnN0cnVjdGlvbikgfHwgTExJbnQ6OmlzV2FzbUxMSW50UEMoZmF1bHRpbmdJbnN0cnVjdGlv
bikpIHsKKyAgICAgICAgYm9vbCBmYXVsdGVkSW5BY3RpdmVHcm93YWJsZU1lbW9yeSA9IGZhbHNl
OwogICAgICAgICB7CiAgICAgICAgICAgICB2b2lkKiBmYXVsdGluZ0FkZHJlc3MgPSBzaWdJbmZv
LmZhdWx0aW5nQWRkcmVzczsKICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25h
bEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImNoZWNraW5nIGZhdWx0aW5nIGFkZHJlc3M6ICIs
IFJhd1BvaW50ZXIoZmF1bHRpbmdBZGRyZXNzKSwgIiBpcyBpbiBhbiBhY3RpdmUgZmFzdCBtZW1v
cnkiKTsKLSAgICAgICAgICAgIGZhdWx0ZWRJbkFjdGl2ZUZhc3RNZW1vcnkgPSBXYXNtOjpNZW1v
cnk6OmFkZHJlc3NJc0luQWN0aXZlRmFzdE1lbW9yeShmYXVsdGluZ0FkZHJlc3MpOworICAgICAg
ICAgICAgZmF1bHRlZEluQWN0aXZlR3Jvd2FibGVNZW1vcnkgPSBXYXNtOjpNZW1vcnk6OmFkZHJl
c3NJc0luQWN0aXZlR3Jvd2FibGVNZW1vcnkoZmF1bHRpbmdBZGRyZXNzKTsKICAgICAgICAgfQot
ICAgICAgICBpZiAoZmF1bHRlZEluQWN0aXZlRmFzdE1lbW9yeSkgeworICAgICAgICBpZiAoZmF1
bHRlZEluQWN0aXZlR3Jvd2FibGVNZW1vcnkpIHsKICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdh
c21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZvdW5kIGFjdGl2ZSBmYXN0
IG1lbW9yeSBmb3IgZmF1bHRpbmcgYWRkcmVzcyIpOwotICAgICAgICAgICAgYXV0byYgY2FsbGVl
UmVnaXN0cnkgPSBDYWxsZWVSZWdpc3RyeTo6c2luZ2xldG9uKCk7Ci0gICAgICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKGNhbGxlZVJlZ2lzdHJ5LmdldExvY2soKSk7Ci0gICAgICAgICAg
ICBmb3IgKGF1dG8qIGNhbGxlZSA6IGNhbGxlZVJlZ2lzdHJ5LmFsbENhbGxlZXMobG9ja2VyKSkg
ewotICAgICAgICAgICAgICAgIGF1dG8gW3N0YXJ0LCBlbmRdID0gY2FsbGVlLT5yYW5nZSgpOwot
ICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5h
bDo6dmVyYm9zZSwgImZ1bmN0aW9uIHN0YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0KSwgIiBlbmQ6
ICIsIFJhd1BvaW50ZXIoZW5kKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXJ0IDw9IGZhdWx0
aW5nSW5zdHJ1Y3Rpb24gJiYgZmF1bHRpbmdJbnN0cnVjdGlvbiA8IGVuZCkgewotICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZl
cmJvc2UsICJmb3VuZCBtYXRjaCIpOwotICAgICAgICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4
dDo6YXJndW1lbnRQb2ludGVyPDE+KGNvbnRleHQpID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
c3RhdGljX2Nhc3Q8dWludHB0cl90PihXYXNtOjpDb250ZXh0Ojp1c2VGYXN0VExTKCkpKTsKLSAg
ICAgICAgICAgICAgICAgICAgTWFjaGluZUNvbnRleHQ6OnNldEluc3RydWN0aW9uUG9pbnRlcihj
b250ZXh0LCBMTEludDo6Z2V0Q29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+KHdhc21fdGhyb3dfZnJv
bV9mYXVsdF9oYW5kbGVyX3RyYW1wb2xpbmUpKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFNpZ25hbEFjdGlvbjo6SGFuZGxlZDsKKworICAgICAgICAgICAgYXV0byBkb2VzRmF1bHRJbldh
c20gPSBbXSh2b2lkKiBmYXVsdGluZ0luc3RydWN0aW9uKSB7CisgICAgICAgICAgICAgICAgaWYg
KExMSW50Ojppc1dhc21MTEludFBDKGZhdWx0aW5nSW5zdHJ1Y3Rpb24pKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBhdXRvJiBjYWxsZWVSZWdpc3Ry
eSA9IENhbGxlZVJlZ2lzdHJ5OjpzaW5nbGV0b24oKTsKKyAgICAgICAgICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKGNhbGxlZVJlZ2lzdHJ5LmdldExvY2soKSk7CisgICAgICAgICAgICAg
ICAgZm9yIChhdXRvKiBjYWxsZWUgOiBjYWxsZWVSZWdpc3RyeS5hbGxDYWxsZWVzKGxvY2tlcikp
IHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBbc3RhcnQsIGVuZF0gPSBjYWxsZWUtPnJhbmdl
KCk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRs
ZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZ1bmN0aW9uIHN0YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0
KSwgIiBlbmQ6ICIsIFJhd1BvaW50ZXIoZW5kKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChz
dGFydCA8PSBmYXVsdGluZ0luc3RydWN0aW9uICYmIGZhdWx0aW5nSW5zdHJ1Y3Rpb24gPCBlbmQp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhh
bmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZvdW5kIG1hdGNoIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9OworCisg
ICAgICAgICAgICBpZiAoZG9lc0ZhdWx0SW5XYXNtKGZhdWx0aW5nSW5zdHJ1Y3Rpb24pKSB7Cisg
ICAgICAgICAgICAgICAgTWFjaGluZUNvbnRleHQ6OmFyZ3VtZW50UG9pbnRlcjwxPihjb250ZXh0
KSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oV2FzbTo6
Q29udGV4dDo6dXNlRmFzdFRMUygpKSk7CisgICAgICAgICAgICAgICAgTWFjaGluZUNvbnRleHQ6
OnNldEluc3RydWN0aW9uUG9pbnRlcihjb250ZXh0LCBMTEludDo6Z2V0Q29kZVB0cjxDRnVuY3Rp
b25QdHJUYWc+KHdhc21fdGhyb3dfZnJvbV9mYXVsdF9oYW5kbGVyX3RyYW1wb2xpbmUpKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gU2lnbmFsQWN0aW9uOjpIYW5kbGVkOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQpAQCAtMTA3LDcgKzExOCw3IEBAIHZvaWQgZW5hYmxlRmFzdE1l
bW9yeSgpCiAgICAgICAgIGlmICghV2FzbTo6aXNTdXBwb3J0ZWQoKSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgp
KQorICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpICYmICFP
cHRpb25zOjp1c2VTaGFyZWRBcnJheUJ1ZmZlcigpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIGFjdGl2YXRlU2lnbmFsSGFuZGxlcnNGb3IoU2lnbmFsOjpBY2Nlc3NGYXVsdCk7CkBA
IC0xMjUsNyArMTM2LDcgQEAgdm9pZCBwcmVwYXJlRmFzdE1lbW9yeSgpCiAgICAgICAgIGlmICgh
V2FzbTo6aXNTdXBwb3J0ZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAo
IU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpKQorICAgICAgICBpZiAoIU9wdGlv
bnM6OnVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpICYmICFPcHRpb25zOjp1c2VTaGFyZWRBcnJh
eUJ1ZmZlcigpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGFkZFNpZ25hbEhhbmRs
ZXIoU2lnbmFsOjpBY2Nlc3NGYXVsdCwgW10gKFNpZ25hbCBzaWduYWwsIFNpZ0luZm8mIHNpZ0lu
Zm8sIFBsYXRmb3JtUmVnaXN0ZXJzJiB1Y29udGV4dCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtSW5zdGFuY2UuaAppbmRleCA2MGU1NjE5MDJkNGMxOGY4MWVlMmYzN2NjNWJlN2Q2
NTQ2NjdkZWVmLi45YTk4NTJjMjQyMjA4MjdiN2VhMGVlNzRkZWZhNDM0NWM4ODEwZWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaApAQCAtNzcsOCArNzcsOCBA
QCBjbGFzcyBJbnN0YW5jZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbnN0YW5jZT4s
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbgogICAgIFRhYmxlKiB0YWJsZSh1bnNpZ25lZCk7CiAg
ICAgdm9pZCBzZXRUYWJsZSh1bnNpZ25lZCwgUmVmPFRhYmxlPiYmKTsKIAotICAgIHZvaWQqIGNh
Y2hlZE1lbW9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkTWVtb3J5LmdldE1heUJlTnVsbChj
YWNoZWRNZW1vcnlTaXplKCkpOyB9Ci0gICAgc2l6ZV90IGNhY2hlZE1lbW9yeVNpemUoKSBjb25z
dCB7IHJldHVybiBtX2NhY2hlZE1lbW9yeVNpemU7IH0KKyAgICB2b2lkKiBjYWNoZWRNZW1vcnko
KSBjb25zdCB7IHJldHVybiBtX2NhY2hlZE1lbW9yeS5nZXRNYXlCZU51bGwoY2FjaGVkQm91bmRz
Q2hlY2tpbmdTaXplKCkpOyB9CisgICAgc2l6ZV90IGNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplOyB9CiAKICAgICB2b2lk
IHNldE1lbW9yeShSZWY8TWVtb3J5PiYmIG1lbW9yeSkKICAgICB7CkBAIC04OSw4ICs4OSw4IEBA
IGNsYXNzIEluc3RhbmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPiwg
cHVibGljIENhbk1ha2VXZWFrUHRyPEluCiAgICAgdm9pZCB1cGRhdGVDYWNoZWRNZW1vcnkoKQog
ICAgIHsKICAgICAgICAgaWYgKG1fbWVtb3J5ICE9IG51bGxwdHIpIHsKLSAgICAgICAgICAgIG1f
Y2FjaGVkTWVtb3J5ID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2Fn
ZWRQdHI+KG1lbW9yeSgpLT5tZW1vcnkoKSwgbWVtb3J5KCktPnNpemUoKSk7Ci0gICAgICAgICAg
ICBtX2NhY2hlZE1lbW9yeVNpemUgPSBtZW1vcnkoKS0+c2l6ZSgpOworICAgICAgICAgICAgbV9j
YWNoZWRNZW1vcnkgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdl
ZFB0cj4obWVtb3J5KCktPm1lbW9yeSgpLCBtZW1vcnkoKS0+Ym91bmRzQ2hlY2tpbmdTaXplKCkp
OworICAgICAgICAgICAgbV9jYWNoZWRCb3VuZHNDaGVja2luZ1NpemUgPSBtZW1vcnkoKS0+Ym91
bmRzQ2hlY2tpbmdTaXplKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE0Niw3ICsxNDYsNyBA
QCBjbGFzcyBJbnN0YW5jZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbnN0YW5jZT4s
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbgogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZN
ZW1vcnkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fbWVtb3J5KTsgfQog
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZHbG9iYWxzKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKEluc3RhbmNlLCBtX2dsb2JhbHMpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZkNhY2hlZE1lbW9yeSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5jZSwgbV9j
YWNoZWRNZW1vcnkpOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNhY2hlZE1lbW9y
eVNpemUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fY2FjaGVkTWVtb3J5
U2l6ZSk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tp
bmdTaXplKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX2NhY2hlZEJvdW5k
c0NoZWNraW5nU2l6ZSk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUG9pbnRlclRv
VG9wRW50cnlGcmFtZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5jZSwgbV9wb2lu
dGVyVG9Ub3BFbnRyeUZyYW1lKTsgfQogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlBv
aW50ZXJUb0FjdHVhbFN0YWNrTGltaXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFu
Y2UsIG1fcG9pbnRlclRvQWN0dWFsU3RhY2tMaW1pdCk7IH0KQEAgLTIwMSw3ICsyMDEsNyBAQCBj
bGFzcyBJbnN0YW5jZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbnN0YW5jZT4sIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxJbgogICAgIHZvaWQqIG1fb3duZXIgeyBudWxscHRyIH07IC8v
IEluIGEgSlMgZW1iZWRkaW5nLCB0aGlzIGlzIGEgSlNXZWJBc3NlbWJseUluc3RhbmNlKi4KICAg
ICBDb250ZXh0KiBtX2NvbnRleHQgeyBudWxscHRyIH07CiAgICAgQ2FnZWRQdHI8R2lnYWNhZ2U6
OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+IG1fY2FjaGVkTWVtb3J5OwotICAgIHNpemVf
dCBtX2NhY2hlZE1lbW9yeVNpemUgeyAwIH07CisgICAgc2l6ZV90IG1fY2FjaGVkQm91bmRzQ2hl
Y2tpbmdTaXplIHsgMCB9OwogICAgIFJlZjxNb2R1bGU+IG1fbW9kdWxlOwogICAgIFJlZlB0cjxD
b2RlQmxvY2s+IG1fY29kZUJsb2NrOwogICAgIFJlZlB0cjxNZW1vcnk+IG1fbWVtb3J5OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcAppbmRleCBhMjZlODFkNzEyNGYz
MGFlMTNkODJiNzRjYjFkNDMwNmEzNGUyNWIyLi4zMDA0MjQ2ZTU5YWY3YmY2NTY3MThjMTAzNDE4
YTViYmU1OTIzNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNw
cApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUg
PHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+CisjaW5jbHVkZSA8
d3RmL1N0ZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2luY2x1ZGUgPGNzdHJp
bmc+CkBAIC0xMzMsMTYgKzEzNCw1NSBAQCBjbGFzcyBNZW1vcnlNYW5hZ2VyIHsKICAgICAgICAg
CiAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmxvZ1dlYkFzc2VtYmx5TWVtb3J5KCksICJG
cmVlZCB2aXJ0dWFsOyBzdGF0ZTogIiwgKnRoaXMpOwogICAgIH0KLSAgICAKLSAgICBib29sIGlz
QWRkcmVzc0luRmFzdE1lbW9yeSh2b2lkKiBhZGRyZXNzKQorCisgICAgTWVtb3J5UmVzdWx0IHRy
eUFsbG9jYXRlR3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9yeShzaXplX3QgbWFwcGVkQ2FwYWNp
dHkpCisgICAgeworICAgICAgICBNZW1vcnlSZXN1bHQgcmVzdWx0ID0gWyZdIHsKKyAgICAgICAg
ICAgIGF1dG8gaG9sZGVyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgICAgIHZvaWQqIHJl
c3VsdCA9IEdpZ2FjYWdlOjp0cnlBbGxvY2F0ZVplcm9lZFZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6
UHJpbWl0aXZlLCBtYXBwZWRDYXBhY2l0eSk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gTWVtb3J5UmVzdWx0KG51bGxwdHIsIE1lbW9yeVJlc3VsdDo6
U3luY1RyeVRvUmVjbGFpbU1lbW9yeSk7CisKKyAgICAgICAgICAgIG1fZ3Jvd2FibGVCb3VuZHND
aGVja2luZ01lbW9yaWVzLmluc2VydChzdGQ6Om1ha2VfcGFpcihiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihyZXN1bHQpLCBtYXBwZWRDYXBhY2l0eSkpOworCisgICAgICAgICAgICByZXR1cm4gTWVt
b3J5UmVzdWx0KHJlc3VsdCwgTWVtb3J5UmVzdWx0OjpTdWNjZXNzKTsKKyAgICAgICAgfSgpOwor
CisgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmxvZ1dlYkFzc2VtYmx5TWVtb3J5KCksICJB
bGxvY2F0ZWQgdmlydHVhbDogIiwgcmVzdWx0LCAiOyBzdGF0ZTogIiwgKnRoaXMpOworCisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdm9pZCBmcmVlR3Jvd2FibGVCb3VuZHND
aGVja2luZ01lbW9yeSh2b2lkKiBiYXNlUHRyLCBzaXplX3QgbWFwcGVkQ2FwYWNpdHkpCisgICAg
eworICAgICAgICB7CisgICAgICAgICAgICBhdXRvIGhvbGRlciA9IGhvbGRMb2NrKG1fbG9jayk7
CisgICAgICAgICAgICBHaWdhY2FnZTo6ZnJlZVZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6UHJpbWl0
aXZlLCBiYXNlUHRyLCBtYXBwZWRDYXBhY2l0eSk7CisgICAgICAgICAgICBtX2dyb3dhYmxlQm91
bmRzQ2hlY2tpbmdNZW1vcmllcy5lcmFzZShzdGQ6Om1ha2VfcGFpcihiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihiYXNlUHRyKSwgbWFwcGVkQ2FwYWNpdHkpKTsKKyAgICAgICAgfQorCisgICAgICAg
IGRhdGFMb2dMbklmKE9wdGlvbnM6OmxvZ1dlYkFzc2VtYmx5TWVtb3J5KCksICJGcmVlZCB2aXJ0
dWFsOyBzdGF0ZTogIiwgKnRoaXMpOworICAgIH0KKworICAgIGJvb2wgaXNBZGRyZXNzSW5Hcm93
YWJsZU1lbW9yeSh2b2lkKiBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgLy8gTk9URTogVGhpcyBj
YW4gYmUgY2FsbGVkIGZyb20gYSBzaWduYWwgaGFuZGxlciwgYnV0IG9ubHkgYWZ0ZXIgd2UgcHJv
dmVkIHRoYXQgd2UncmUgaW4gSklUIGNvZGUuCisgICAgICAgIC8vIE5PVEU6IFRoaXMgY2FuIGJl
IGNhbGxlZCBmcm9tIGEgc2lnbmFsIGhhbmRsZXIsIGJ1dCBvbmx5IGFmdGVyIHdlIHByb3ZlZCB0
aGF0IHdlJ3JlIGluIEpJVCBjb2RlIG9yIFdhc21MTEludCBjb2RlLgogICAgICAgICBhdXRvIGhv
bGRlciA9IGhvbGRMb2NrKG1fbG9jayk7CiAgICAgICAgIGZvciAodm9pZCogbWVtb3J5IDogbV9m
YXN0TWVtb3JpZXMpIHsKICAgICAgICAgICAgIGNoYXIqIHN0YXJ0ID0gc3RhdGljX2Nhc3Q8Y2hh
cio+KG1lbW9yeSk7CiAgICAgICAgICAgICBpZiAoc3RhcnQgPD0gYWRkcmVzcyAmJiBhZGRyZXNz
IDw9IHN0YXJ0ICsgTWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQorICAgICAgICB1aW50cHRyX3QgYWRkcmVzc1ZhbHVlID0g
Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oYWRkcmVzcyk7CisgICAgICAgIGF1dG8gaXRlcmF0b3Ig
PSBzdGQ6OnVwcGVyX2JvdW5kKG1fZ3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9yaWVzLmJlZ2lu
KCksIG1fZ3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9yaWVzLmVuZCgpLCBzdGQ6Om1ha2VfcGFp
cihhZGRyZXNzVmFsdWUsIDApLAorICAgICAgICAgICAgW10oc3RkOjpwYWlyPHVpbnRwdHJfdCwg
c2l6ZV90PiBhLCBzdGQ6OnBhaXI8dWludHB0cl90LCBzaXplX3Q+IGIpIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gKGEuZmlyc3QgKyBhLnNlY29uZCkgPCAoYi5maXJzdCArIGIuc2Vjb25kKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbV9ncm93YWJsZUJvdW5k
c0NoZWNraW5nTWVtb3JpZXMuZW5kKCkpIHsKKyAgICAgICAgICAgIC8vIFNpbmNlIHdlIG5ldmVy
IGhhdmUgb3ZlcmxhcHBlZCByYW5nZSBpbiBtX2dyb3dhYmxlQm91bmRzQ2hlY2tpbmdNZW1vcmll
cywganVzdCBjaGVja2luZyBvbmUgbG93ZXItYm91bmQgcmFuZ2UgaXMgZW5vdWdoLgorICAgICAg
ICAgICAgaWYgKGl0ZXJhdG9yLT5maXJzdCA8PSBhZGRyZXNzVmFsdWUgJiYgYWRkcmVzc1ZhbHVl
IDwgKGl0ZXJhdG9yLT5maXJzdCArIGl0ZXJhdG9yLT5zZWNvbmQpKQorICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
QEAgLTE5Miw2ICsyMzIsNyBAQCBjbGFzcyBNZW1vcnlNYW5hZ2VyIHsKICAgICBMb2NrIG1fbG9j
azsKICAgICB1bnNpZ25lZCBtX21heEZhc3RNZW1vcnlDb3VudCB7IDAgfTsKICAgICBWZWN0b3I8
dm9pZCo+IG1fZmFzdE1lbW9yaWVzOworICAgIFN0ZFNldDxzdGQ6OnBhaXI8dWludHB0cl90LCBz
aXplX3Q+PiBtX2dyb3dhYmxlQm91bmRzQ2hlY2tpbmdNZW1vcmllczsKICAgICBzaXplX3QgbV9w
aHlzaWNhbEJ5dGVzIHsgMCB9OwogfTsKIApAQCAtMjM1LDMwICsyNzYsNjkgQEAgYm9vbCB0cnlB
bGxvY2F0ZShjb25zdCBGdW5jJiBhbGxvY2F0ZSwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKE1l
bW9yeTo6Tm90aWZ5UHIKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKKworTWVtb3J5SGFu
ZGxlOjpNZW1vcnlIYW5kbGUodm9pZCogbWVtb3J5LCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG1hcHBl
ZENhcGFjaXR5LCBQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIE1lbW9yeVNo
YXJpbmdNb2RlIHNoYXJpbmdNb2RlLCBNZW1vcnlNb2RlIG1vZGUpCisgICAgOiBtX21lbW9yeSht
ZW1vcnksIG1hcHBlZENhcGFjaXR5KQorICAgICwgbV9zaXplKHNpemUpCisgICAgLCBtX21hcHBl
ZENhcGFjaXR5KG1hcHBlZENhcGFjaXR5KQorICAgICwgbV9pbml0aWFsKGluaXRpYWwpCisgICAg
LCBtX21heGltdW0obWF4aW11bSkKKyAgICAsIG1fc2hhcmluZ01vZGUoc2hhcmluZ01vZGUpCisg
ICAgLCBtX21vZGUobW9kZSkKK3sKK30KKworTWVtb3J5SGFuZGxlOjp+TWVtb3J5SGFuZGxlKCkK
K3sKKyAgICBpZiAobV9tZW1vcnkpIHsKKyAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVQaHlz
aWNhbEJ5dGVzKG1fc2l6ZSk7CisgICAgICAgIHN3aXRjaCAobV9tb2RlKSB7CisgICAgICAgIGNh
c2UgTWVtb3J5TW9kZTo6U2lnbmFsaW5nOgorICAgICAgICAgICAgaWYgKG1wcm90ZWN0KG1lbW9y
eSgpLCBNZW1vcnk6OmZhc3RNYXBwZWRCeXRlcygpLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKSkg
eworICAgICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3Io
ZXJybm8pLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVGYXN0
TWVtb3J5KG1lbW9yeSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1lbW9y
eU1vZGU6OkJvdW5kc0NoZWNraW5nOiB7CisgICAgICAgICAgICBzd2l0Y2ggKG1fc2hhcmluZ01v
ZGUpIHsKKyAgICAgICAgICAgIGNhc2UgTWVtb3J5U2hhcmluZ01vZGU6OkRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgR2lnYWNhZ2U6OmZyZWVWaXJ0dWFsUGFnZXMoR2lnYWNhZ2U6OlByaW1pdGl2
ZSwgbWVtb3J5KCksIG1fc2l6ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIE1lbW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQ6IHsKKyAgICAgICAgICAgICAgICBpZiAo
bXByb3RlY3QobWVtb3J5KCksIG1fbWFwcGVkQ2FwYWNpdHksIFBST1RfUkVBRCB8IFBST1RfV1JJ
VEUpKSB7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwg
c3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbWVt
b3J5TWFuYWdlcigpLmZyZWVHcm93YWJsZUJvdW5kc0NoZWNraW5nTWVtb3J5KG1lbW9yeSgpLCBt
X21hcHBlZENhcGFjaXR5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9Cit9CisKIE1lbW9yeTo6TWVtb3J5KCkKKyAgICA6IG1faGFuZGxlKGFkb3B0UmVmKCpu
ZXcgTWVtb3J5SGFuZGxlKG51bGxwdHIsIDAsIDAsIFBhZ2VDb3VudCgwKSwgUGFnZUNvdW50KDAp
LCBNZW1vcnlTaGFyaW5nTW9kZTo6RGVmYXVsdCwgTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcp
KSkKIHsKIH0KIAotTWVtb3J5OjpNZW1vcnkoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBt
YXhpbXVtLCBGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVz
c3VyZSwgRnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWlt
TWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNv
dW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKQotICAgIDogbV9pbml0aWFsKGluaXRpYWwpCi0g
ICAgLCBtX21heGltdW0obWF4aW11bSkKK01lbW9yeTo6TWVtb3J5KFBhZ2VDb3VudCBpbml0aWFs
LCBQYWdlQ291bnQgbWF4aW11bSwgTWVtb3J5U2hhcmluZ01vZGUgc2hhcmluZ01vZGUsIEZ1bmN0
aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBGdW5jdGlv
bjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdURjo6
RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdyb3dT
dWNjZXNzQ2FsbGJhY2spCisgICAgOiBtX2hhbmRsZShhZG9wdFJlZigqbmV3IE1lbW9yeUhhbmRs
ZShudWxscHRyLCAwLCAwLCBpbml0aWFsLCBtYXhpbXVtLCBzaGFyaW5nTW9kZSwgTWVtb3J5TW9k
ZTo6Qm91bmRzQ2hlY2tpbmcpKSkKICAgICAsIG1fbm90aWZ5TWVtb3J5UHJlc3N1cmUoV1RGTW92
ZShub3RpZnlNZW1vcnlQcmVzc3VyZSkpCiAgICAgLCBtX3N5bmNUcnlUb1JlY2xhaW1NZW1vcnko
V1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSkKICAgICAsIG1fZ3Jvd1N1Y2Nlc3NDYWxs
YmFjayhXVEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJhY2spKQogewogICAgIEFTU0VSVCghaW5pdGlh
bC5ieXRlcygpKTsKLSAgICBBU1NFUlQobV9tb2RlID09IE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNr
aW5nKTsKKyAgICBBU1NFUlQobW9kZSgpID09IE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKTsK
ICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiTWVtb3J5OjpNZW1vcnkgYWxsb2NhdGluZyAiLCAq
dGhpcyk7CiAgICAgQVNTRVJUKCFtZW1vcnkoKSk7CiB9CiAKLU1lbW9yeTo6TWVtb3J5KHZvaWQq
IG1lbW9yeSwgUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBzaXplX3QgbWFw
cGVkQ2FwYWNpdHksIE1lbW9yeU1vZGUgbW9kZSwgRnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3Vy
ZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIEZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFp
bSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNj
ZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykKLSAgICA6
IG1fbWVtb3J5KG1lbW9yeSwgaW5pdGlhbC5ieXRlcygpKQotICAgICwgbV9zaXplKGluaXRpYWwu
Ynl0ZXMoKSkKLSAgICAsIG1faW5pdGlhbChpbml0aWFsKQotICAgICwgbV9tYXhpbXVtKG1heGlt
dW0pCi0gICAgLCBtX21hcHBlZENhcGFjaXR5KG1hcHBlZENhcGFjaXR5KQotICAgICwgbV9tb2Rl
KG1vZGUpCitNZW1vcnk6Ok1lbW9yeShSZWY8TWVtb3J5SGFuZGxlPiYmIGhhbmRsZSwgRnVuY3Rp
b248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIEZ1bmN0aW9u
PHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpG
dW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1
Y2Nlc3NDYWxsYmFjaykKKyAgICA6IG1faGFuZGxlKFdURk1vdmUoaGFuZGxlKSkKICAgICAsIG1f
bm90aWZ5TWVtb3J5UHJlc3N1cmUoV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSkpCiAgICAg
LCBtX3N5bmNUcnlUb1JlY2xhaW1NZW1vcnkoV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5
KSkKICAgICAsIG1fZ3Jvd1N1Y2Nlc3NDYWxsYmFjayhXVEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJh
Y2spKQpAQCAtMjcxLDcgKzM1MSwxMiBAQCBSZWY8TWVtb3J5PiBNZW1vcnk6OmNyZWF0ZSgpCiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVtb3J5KCkpOwogfQogCi1SZWZQdHI8TWVtb3J5PiBN
ZW1vcnk6OnRyeUNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIFdU
Rjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUs
IFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWlt
TWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNv
dW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKQorUmVmPE1lbW9yeT4gTWVtb3J5OjpjcmVhdGUo
UmVmPE1lbW9yeUhhbmRsZT4mJiBoYW5kbGUsIFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVz
c3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5
VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQo
R3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNr
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lbW9yeShXVEZNb3ZlKGhhbmRsZSksIFdU
Rk1vdmUobm90aWZ5TWVtb3J5UHJlc3N1cmUpLCBXVEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1v
cnkpLCBXVEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJhY2spKSk7Cit9CisKK1JlZlB0cjxNZW1vcnk+
IE1lbW9yeTo6dHJ5Q3JlYXRlKFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwg
TWVtb3J5U2hhcmluZ01vZGUgc2hhcmluZ01vZGUsIFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQ
cmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5j
VHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZv
aWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxi
YWNrKQogewogICAgIEFTU0VSVChpbml0aWFsKTsKICAgICBSRUxFQVNFX0FTU0VSVCghbWF4aW11
bSB8fCBtYXhpbXVtID49IGluaXRpYWwpOyAvLyBUaGlzIHNob3VsZCBiZSBndWFyYW50ZWVkIGJ5
IG91ciBjYWxsZXIuCkBAIC0yODUsNyArMzcwLDcgQEAgUmVmUHRyPE1lbW9yeT4gTWVtb3J5Ojp0
cnlDcmVhdGUoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBXVEY6OkZ1bmMK
ICAgICBpZiAobWF4aW11bSAmJiAhbWF4aW11bUJ5dGVzKSB7CiAgICAgICAgIC8vIFVzZXIgc3Bl
Y2lmaWVkIGEgemVybyBtYXhpbXVtLCBpbml0aWFsIHNpemUgbXVzdCBhbHNvIGJlIHplcm8uCiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpbml0aWFsQnl0ZXMpOwotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE1lbW9yeShpbml0aWFsLCBtYXhpbXVtLCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVBy
ZXNzdXJlKSwgV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92ZShncm93U3Vj
Y2Vzc0NhbGxiYWNrKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lbW9yeShpbml0
aWFsLCBtYXhpbXVtLCBzaGFyaW5nTW9kZSwgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSks
IFdURk1vdmUoc3luY1RyeVRvUmVjbGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxs
YmFjaykpKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBkb25lID0gdHJ5QWxsb2NhdGUoCkBAIC0z
MDYsNDggKzM5MSw1NiBAQCBSZWZQdHI8TWVtb3J5PiBNZW1vcnk6OnRyeUNyZWF0ZShQYWdlQ291
bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIFdURjo6RnVuYwogICAgIH0KICAgICAKICAg
ICBpZiAoZmFzdE1lbW9yeSkgewotICAgICAgICAKICAgICAgICAgaWYgKG1wcm90ZWN0KGZhc3RN
ZW1vcnkgKyBpbml0aWFsQnl0ZXMsIE1lbW9yeTo6ZmFzdE1hcHBlZEJ5dGVzKCkgLSBpbml0aWFs
Qnl0ZXMsIFBST1RfTk9ORSkpIHsKICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxl
ZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE1lbW9yeShmYXN0TWVtb3J5LCBpbml0aWFsLCBtYXhpbXVtLCBNZW1vcnk6OmZhc3RNYXBwZWRC
eXRlcygpLCBNZW1vcnlNb2RlOjpTaWduYWxpbmcsIFdURk1vdmUobm90aWZ5TWVtb3J5UHJlc3N1
cmUpLCBXVEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpLCBXVEZNb3ZlKGdyb3dTdWNjZXNz
Q2FsbGJhY2spKSk7CisgICAgICAgIHJldHVybiBNZW1vcnk6OmNyZWF0ZShhZG9wdFJlZigqbmV3
IE1lbW9yeUhhbmRsZShmYXN0TWVtb3J5LCBpbml0aWFsQnl0ZXMsIE1lbW9yeTo6ZmFzdE1hcHBl
ZEJ5dGVzKCksIGluaXRpYWwsIG1heGltdW0sIHNoYXJpbmdNb2RlLCBNZW1vcnlNb2RlOjpTaWdu
YWxpbmcpKSwgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1vdmUoc3luY1RyeVRv
UmVjbGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykpOwogICAgIH0KICAg
ICAKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6Y3Jhc2hJZldlYkFzc2VtYmx5Q2FudEZhc3RN
ZW1vcnkoKSkpCiAgICAgICAgIHdlYkFzc2VtYmx5Q291bGRudEdldEZhc3RNZW1vcnkoKTsKIAog
ICAgIGlmICghaW5pdGlhbEJ5dGVzKQotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lbW9y
eShpbml0aWFsLCBtYXhpbXVtLCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJlKSwgV1RGTW92
ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92ZShncm93U3VjY2Vzc0NhbGxiYWNrKSkp
OwotICAgIAotICAgIHZvaWQqIHNsb3dNZW1vcnkgPSBHaWdhY2FnZTo6dHJ5QWxsb2NhdGVaZXJv
ZWRWaXJ0dWFsUGFnZXMoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgaW5pdGlhbEJ5dGVzKTsKLSAgICBp
ZiAoIXNsb3dNZW1vcnkpIHsKLSAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVQaHlzaWNhbEJ5
dGVzKGluaXRpYWxCeXRlcyk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IE1lbW9yeShpbml0aWFsLCBtYXhpbXVtLCBzaGFyaW5nTW9kZSwgV1RG
TW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1vdmUoc3luY1RyeVRvUmVjbGFpbU1lbW9y
eSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykpKTsKKworICAgIHN3aXRjaCAoc2hhcmlu
Z01vZGUpIHsKKyAgICBjYXNlIE1lbW9yeVNoYXJpbmdNb2RlOjpEZWZhdWx0OiB7CisgICAgICAg
IHZvaWQqIHNsb3dNZW1vcnkgPSBHaWdhY2FnZTo6dHJ5QWxsb2NhdGVaZXJvZWRWaXJ0dWFsUGFn
ZXMoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgaW5pdGlhbEJ5dGVzKTsKKyAgICAgICAgaWYgKCFzbG93
TWVtb3J5KSB7CisgICAgICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZVBoeXNpY2FsQnl0ZXMo
aW5pdGlhbEJ5dGVzKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBNZW1vcnk6OmNyZWF0ZShhZG9wdFJlZigqbmV3IE1lbW9yeUhhbmRsZShz
bG93TWVtb3J5LCBpbml0aWFsQnl0ZXMsIGluaXRpYWxCeXRlcywgaW5pdGlhbCwgbWF4aW11bSwg
c2hhcmluZ01vZGUsIE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSksIFdURk1vdmUobm90aWZ5
TWVtb3J5UHJlc3N1cmUpLCBXVEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpLCBXVEZNb3Zl
KGdyb3dTdWNjZXNzQ2FsbGJhY2spKTsKICAgICB9Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
ZW1vcnkoc2xvd01lbW9yeSwgaW5pdGlhbCwgbWF4aW11bSwgaW5pdGlhbEJ5dGVzLCBNZW1vcnlN
b2RlOjpCb3VuZHNDaGVja2luZywgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1v
dmUoc3luY1RyeVRvUmVjbGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykp
KTsKLX0KKyAgICBjYXNlIE1lbW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQ6IHsKKyAgICAgICAgY2hh
ciogc2xvd01lbW9yeSA9IG51bGxwdHI7CisgICAgICAgIHRyeUFsbG9jYXRlKAorICAgICAgICAg
ICAgWyZdICgpIC0+IE1lbW9yeVJlc3VsdDo6S2luZCB7CisgICAgICAgICAgICAgICAgYXV0byBy
ZXN1bHQgPSBtZW1vcnlNYW5hZ2VyKCkudHJ5QWxsb2NhdGVHcm93YWJsZUJvdW5kc0NoZWNraW5n
TWVtb3J5KG1heGltdW1CeXRlcyk7CisgICAgICAgICAgICAgICAgc2xvd01lbW9yeSA9IGJpdHdp
c2VfY2FzdDxjaGFyKj4ocmVzdWx0LmJhc2VQdHIpOworICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQua2luZDsKKyAgICAgICAgICAgIH0sIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBzeW5jVHJ5
VG9SZWNsYWltTWVtb3J5KTsKKyAgICAgICAgaWYgKCFzbG93TWVtb3J5KSB7CisgICAgICAgICAg
ICBtZW1vcnlNYW5hZ2VyKCkuZnJlZVBoeXNpY2FsQnl0ZXMoaW5pdGlhbEJ5dGVzKTsKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CiAKLU1lbW9yeTo6fk1lbW9yeSgpCi17
Ci0gICAgaWYgKG1fbWVtb3J5KSB7Ci0gICAgICAgIG1lbW9yeU1hbmFnZXIoKS5mcmVlUGh5c2lj
YWxCeXRlcyhtX3NpemUpOwotICAgICAgICBzd2l0Y2ggKG1fbW9kZSkgewotICAgICAgICBjYXNl
IE1lbW9yeU1vZGU6OlNpZ25hbGluZzoKLSAgICAgICAgICAgIGlmIChtcHJvdGVjdChtZW1vcnko
KSwgTWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkpIHsK
LSAgICAgICAgICAgICAgICBkYXRhTG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHN0cmVycm9yKGVy
cm5vKSwgIlxuIik7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1lbW9yeU1hbmFnZXIoKS5mcmVlRmFzdE1l
bW9yeShtZW1vcnkoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNZW1vcnlN
b2RlOjpCb3VuZHNDaGVja2luZzoKLSAgICAgICAgICAgIEdpZ2FjYWdlOjpmcmVlVmlydHVhbFBh
Z2VzKEdpZ2FjYWdlOjpQcmltaXRpdmUsIG1lbW9yeSgpLCBtX3NpemUpOwotICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGlmIChtcHJvdGVjdChzbG93TWVtb3J5ICsgaW5pdGlhbEJ5dGVzLCBt
YXhpbXVtQnl0ZXMgLSBpbml0aWFsQnl0ZXMsIFBST1RfTk9ORSkpIHsKKyAgICAgICAgICAgIGRh
dGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gTWVtb3J5OjpjcmVhdGUoYWRvcHRSZWYoKm5ldyBNZW1vcnlIYW5kbGUoc2xvd01l
bW9yeSwgaW5pdGlhbEJ5dGVzLCBtYXhpbXVtQnl0ZXMsIGluaXRpYWwsIG1heGltdW0sIHNoYXJp
bmdNb2RlLCBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpLCBXVEZNb3ZlKG5vdGlmeU1lbW9y
eVByZXNzdXJlKSwgV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92ZShncm93
U3VjY2Vzc0NhbGxiYWNrKSk7CiAgICAgfQorICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCitNZW1vcnk6On5NZW1vcnkoKSA9
IGRlZmF1bHQ7CisKIHNpemVfdCBNZW1vcnk6OmZhc3RNYXBwZWRSZWR6b25lQnl0ZXMoKQogewog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KFBhZ2VDb3VudDo6cGFnZVNpemUpICogT3B0
aW9uczo6d2ViQXNzZW1ibHlGYXN0TWVtb3J5UmVkem9uZVBhZ2VzKCk7CkBAIC0zNTksMTggKzQ1
Miw3NyBAQCBzaXplX3QgTWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKQogICAgIHJldHVybiAoc3Rh
dGljX2Nhc3Q8c2l6ZV90PigxKSA8PCAzMikgKyBmYXN0TWFwcGVkUmVkem9uZUJ5dGVzKCk7CiB9
CiAKLWJvb2wgTWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUZhc3RNZW1vcnkodm9pZCogYWRkcmVz
cykKK2Jvb2wgTWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUdyb3dhYmxlTWVtb3J5KHZvaWQqIGFk
ZHJlc3MpCiB7Ci0gICAgcmV0dXJuIG1lbW9yeU1hbmFnZXIoKS5pc0FkZHJlc3NJbkZhc3RNZW1v
cnkoYWRkcmVzcyk7CisgICAgcmV0dXJuIG1lbW9yeU1hbmFnZXIoKS5pc0FkZHJlc3NJbkdyb3dh
YmxlTWVtb3J5KGFkZHJlc3MpOwogfQogCi1FeHBlY3RlZDxQYWdlQ291bnQsIE1lbW9yeTo6R3Jv
d0ZhaWxSZWFzb24+IE1lbW9yeTo6Z3JvdyhQYWdlQ291bnQgZGVsdGEpCitFeHBlY3RlZDxQYWdl
Q291bnQsIE1lbW9yeTo6R3Jvd0ZhaWxSZWFzb24+IE1lbW9yeTo6Z3Jvd1NoYXJlZChQYWdlQ291
bnQgZGVsdGEpCiB7Ci0gICAgY29uc3QgV2FzbTo6UGFnZUNvdW50IG9sZFBhZ2VDb3VudCA9IHNp
emVJblBhZ2VzKCk7CisgICAgV2FzbTo6UGFnZUNvdW50IG9sZFBhZ2VDb3VudDsKKyAgICBXYXNt
OjpQYWdlQ291bnQgbmV3UGFnZUNvdW50OworICAgIGF1dG8gcmVzdWx0ID0gKFsmXSgpIC0+IEV4
cGVjdGVkPFBhZ2VDb3VudCwgTWVtb3J5OjpHcm93RmFpbFJlYXNvbj4geworICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1faGFuZGxlLT5sb2NrKCkpOworCisgICAgICAgIG9sZFBhZ2VD
b3VudCA9IHNpemVJblBhZ2VzKCk7CisgICAgICAgIG5ld1BhZ2VDb3VudCA9IG9sZFBhZ2VDb3Vu
dCArIGRlbHRhOworICAgICAgICBpZiAoIW5ld1BhZ2VDb3VudCB8fCAhbmV3UGFnZUNvdW50Lmlz
VmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChHcm93RmFpbFJlYXNv
bjo6SW52YWxpZEdyb3dTaXplKTsKKyAgICAgICAgaWYgKG5ld1BhZ2VDb3VudC5ieXRlcygpID4g
TUFYX0FSUkFZX0JVRkZFUl9TSVpFKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KEdyb3dGYWlsUmVhc29uOjpPdXRPZk1lbW9yeSk7CisKKyAgICAgICAgaWYgKCFkZWx0YS5wYWdl
Q291bnQoKSkKKyAgICAgICAgICAgIHJldHVybiBvbGRQYWdlQ291bnQ7CisKKyAgICAgICAgZGF0
YUxvZ0xuSWYodmVyYm9zZSwgIk1lbW9yeTo6Z3JvdygiLCBkZWx0YSwgIikgdG8gIiwgbmV3UGFn
ZUNvdW50LCAiIGZyb20gIiwgKnRoaXMpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChuZXdQYWdl
Q291bnQgPiBQYWdlQ291bnQ6OmZyb21CeXRlcyhzaXplKCkpKTsKKworICAgICAgICBpZiAobWF4
aW11bSgpICYmIG5ld1BhZ2VDb3VudCA+IG1heGltdW0oKSkKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChHcm93RmFpbFJlYXNvbjo6V291bGRFeGNlZWRNYXhpbXVtKTsKKworICAg
ICAgICBzaXplX3QgZGVzaXJlZFNpemUgPSBuZXdQYWdlQ291bnQuYnl0ZXMoKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoZGVzaXJlZFNpemUgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoZGVzaXJlZFNpemUgPiBzaXplKCkpOworCisgICAgICAgIC8v
IElmIHRoZSBtZW1vcnkgaXMgTWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZCwgd2UgYWxyZWFkeSBh
bGxvY2F0ZWQgZW5vdWdoIHZpcnR1YWwgYWRkcmVzcyBzcGFjZSBldmVuIGlmIHRoZSBtZW1vcnkg
aXMgYm91bmQtY2hlY2tpbmcgbW9kZS4gV2UgcGVyZm9ybSBtcHJvdGVjdCB0byBleHRlbmQuCisg
ICAgICAgIHNpemVfdCBleHRyYUJ5dGVzID0gZGVzaXJlZFNpemUgLSBzaXplKCk7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGV4dHJhQnl0ZXMpOworICAgICAgICBib29sIGFsbG9jYXRpb25TdWNj
ZXNzID0gdHJ5QWxsb2NhdGUoCisgICAgICAgICAgICBbJl0gKCkgLT4gTWVtb3J5UmVzdWx0OjpL
aW5kIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3J5TWFuYWdlcigpLnRyeUFsbG9jYXRl
UGh5c2ljYWxCeXRlcyhleHRyYUJ5dGVzKTsKKyAgICAgICAgICAgIH0sIFtdKFdhc206Ok1lbW9y
eTo6Tm90aWZ5UHJlc3N1cmUpIHsgfSwgW10oTWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7IH0p
OworICAgICAgICBpZiAoIWFsbG9jYXRpb25TdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpPdXRPZk1lbW9yeSk7CisKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQobWVtb3J5KCkpOworCisgICAgICAgIC8vIFNpZ25hbGluZyBtZW1vcnkgbXVz
dCBoYXZlIGJlZW4gcHJlLWFsbG9jYXRlZCB2aXJ0dWFsbHkuCisgICAgICAgIHVpbnQ4X3QqIHN0
YXJ0QWRkcmVzcyA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtZW1vcnkoKSkgKyBzaXplKCk7CiAK
KyAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1hcmtpbmcgV2ViQXNzZW1ibHkgbWVtb3J5
J3MgIiwgUmF3UG9pbnRlcihtZW1vcnkoKSksICIgYXMgcmVhZCt3cml0ZSBpbiByYW5nZSBbIiwg
UmF3UG9pbnRlcihzdGFydEFkZHJlc3MpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXJ0QWRkcmVzcyAr
IGV4dHJhQnl0ZXMpLCAiKSIpOworICAgICAgICBpZiAobXByb3RlY3Qoc3RhcnRBZGRyZXNzLCBl
eHRyYUJ5dGVzLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKSkgeworICAgICAgICAgICAgZGF0YUxv
ZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIFdU
Rjo6c3RvcmVTdG9yZUZlbmNlKCk7IC8vIEVuc3VyZSBzdG9yaW5nICJzaXplIiBoYXBwZW5zIGFm
dGVyIG1wcm90ZWN0IGlzIGRvbmUuCisgICAgICAgIG1faGFuZGxlLT5ncm93VG9TaXplKGRlc2ly
ZWRTaXplKTsKKyAgICAgICAgcmV0dXJuIG9sZFBhZ2VDb3VudDsKKyAgICB9KCkpOworICAgIGlm
IChyZXN1bHQpCisgICAgICAgIG1fZ3Jvd1N1Y2Nlc3NDYWxsYmFjayhHcm93U3VjY2Vzc1RhZywg
b2xkUGFnZUNvdW50LCBuZXdQYWdlQ291bnQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0V4
cGVjdGVkPFBhZ2VDb3VudCwgTWVtb3J5OjpHcm93RmFpbFJlYXNvbj4gTWVtb3J5Ojpncm93KFBh
Z2VDb3VudCBkZWx0YSkKK3sKICAgICBpZiAoIWRlbHRhLmlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpJbnZhbGlkRGVsdGEpOwotICAgIAor
CisgICAgaWYgKHNoYXJpbmdNb2RlKCkgPT0gTWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZCkKKyAg
ICAgICAgcmV0dXJuIGdyb3dTaGFyZWQoZGVsdGEpOworCisgICAgY29uc3QgV2FzbTo6UGFnZUNv
dW50IG9sZFBhZ2VDb3VudCA9IHNpemVJblBhZ2VzKCk7CiAgICAgY29uc3QgV2FzbTo6UGFnZUNv
dW50IG5ld1BhZ2VDb3VudCA9IG9sZFBhZ2VDb3VudCArIGRlbHRhOwogICAgIGlmICghbmV3UGFn
ZUNvdW50IHx8ICFuZXdQYWdlQ291bnQuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoR3Jvd0ZhaWxSZWFzb246OkludmFsaWRHcm93U2l6ZSk7CkBAIC0zOTEsNTIgKzU0
Myw1OCBAQCBFeHBlY3RlZDxQYWdlQ291bnQsIE1lbW9yeTo6R3Jvd0ZhaWxSZWFzb24+IE1lbW9y
eTo6Z3JvdyhQYWdlQ291bnQgZGVsdGEpCiAgICAgICAgIHJldHVybiBzdWNjZXNzKCk7CiAKICAg
ICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiTWVtb3J5Ojpncm93KCIsIGRlbHRhLCAiKSB0byAiLCBu
ZXdQYWdlQ291bnQsICIgZnJvbSAiLCAqdGhpcyk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobmV3UGFn
ZUNvdW50ID4gUGFnZUNvdW50Ojpmcm9tQnl0ZXMobV9zaXplKSk7CisgICAgUkVMRUFTRV9BU1NF
UlQobmV3UGFnZUNvdW50ID4gUGFnZUNvdW50Ojpmcm9tQnl0ZXMoc2l6ZSgpKSk7CiAKICAgICBp
ZiAobWF4aW11bSgpICYmIG5ld1BhZ2VDb3VudCA+IG1heGltdW0oKSkKICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpXb3VsZEV4Y2VlZE1heGltdW0pOwogCiAg
ICAgc2l6ZV90IGRlc2lyZWRTaXplID0gbmV3UGFnZUNvdW50LmJ5dGVzKCk7CiAgICAgUkVMRUFT
RV9BU1NFUlQoZGVzaXJlZFNpemUgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKLSAgICBSRUxF
QVNFX0FTU0VSVChkZXNpcmVkU2l6ZSA+IG1fc2l6ZSk7Ci0gICAgc2l6ZV90IGV4dHJhQnl0ZXMg
PSBkZXNpcmVkU2l6ZSAtIG1fc2l6ZTsKLSAgICBSRUxFQVNFX0FTU0VSVChleHRyYUJ5dGVzKTsK
LSAgICBib29sIGFsbG9jYXRpb25TdWNjZXNzID0gdHJ5QWxsb2NhdGUoCi0gICAgICAgIFsmXSAo
KSAtPiBNZW1vcnlSZXN1bHQ6OktpbmQgewotICAgICAgICAgICAgcmV0dXJuIG1lbW9yeU1hbmFn
ZXIoKS50cnlBbGxvY2F0ZVBoeXNpY2FsQnl0ZXMoZXh0cmFCeXRlcyk7Ci0gICAgICAgIH0sIG1f
bm90aWZ5TWVtb3J5UHJlc3N1cmUsIG1fc3luY1RyeVRvUmVjbGFpbU1lbW9yeSk7Ci0gICAgaWYg
KCFhbGxvY2F0aW9uU3VjY2VzcykKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEdyb3dG
YWlsUmVhc29uOjpPdXRPZk1lbW9yeSk7Ci0KKyAgICBSRUxFQVNFX0FTU0VSVChkZXNpcmVkU2l6
ZSA+IHNpemUoKSk7CiAgICAgc3dpdGNoIChtb2RlKCkpIHsKICAgICBjYXNlIE1lbW9yeU1vZGU6
OkJvdW5kc0NoZWNraW5nOiB7CisgICAgICAgIGJvb2wgYWxsb2NhdGlvblN1Y2Nlc3MgPSB0cnlB
bGxvY2F0ZSgKKyAgICAgICAgICAgIFsmXSAoKSAtPiBNZW1vcnlSZXN1bHQ6OktpbmQgeworICAg
ICAgICAgICAgICAgIHJldHVybiBtZW1vcnlNYW5hZ2VyKCkudHJ5QWxsb2NhdGVQaHlzaWNhbEJ5
dGVzKGRlc2lyZWRTaXplKTsKKyAgICAgICAgICAgIH0sIG1fbm90aWZ5TWVtb3J5UHJlc3N1cmUs
IG1fc3luY1RyeVRvUmVjbGFpbU1lbW9yeSk7CisgICAgICAgIGlmICghYWxsb2NhdGlvblN1Y2Nl
c3MpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoR3Jvd0ZhaWxSZWFzb246Ok91
dE9mTWVtb3J5KTsKKwogICAgICAgICBSRUxFQVNFX0FTU0VSVChtYXhpbXVtKCkuYnl0ZXMoKSAh
PSAwKTsKIAogICAgICAgICB2b2lkKiBuZXdNZW1vcnkgPSBHaWdhY2FnZTo6dHJ5QWxsb2NhdGVa
ZXJvZWRWaXJ0dWFsUGFnZXMoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgZGVzaXJlZFNpemUpOwogICAg
ICAgICBpZiAoIW5ld01lbW9yeSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChH
cm93RmFpbFJlYXNvbjo6T3V0T2ZNZW1vcnkpOwogCi0gICAgICAgIG1lbWNweShuZXdNZW1vcnks
IG1lbW9yeSgpLCBtX3NpemUpOwotICAgICAgICBpZiAobV9tZW1vcnkpCi0gICAgICAgICAgICBH
aWdhY2FnZTo6ZnJlZVZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBtZW1vcnkoKSwg
bV9zaXplKTsKLSAgICAgICAgbV9tZW1vcnkgPSBDYWdlZE1lbW9yeShuZXdNZW1vcnksIGRlc2ly
ZWRTaXplKTsKLSAgICAgICAgbV9tYXBwZWRDYXBhY2l0eSA9IGRlc2lyZWRTaXplOwotICAgICAg
ICBtX3NpemUgPSBkZXNpcmVkU2l6ZTsKKyAgICAgICAgbWVtY3B5KG5ld01lbW9yeSwgbWVtb3J5
KCksIHNpemUoKSk7CisgICAgICAgIGF1dG8gbmV3SGFuZGxlID0gYWRvcHRSZWYoKm5ldyBNZW1v
cnlIYW5kbGUobmV3TWVtb3J5LCBkZXNpcmVkU2l6ZSwgZGVzaXJlZFNpemUsIGluaXRpYWwoKSwg
bWF4aW11bSgpLCBzaGFyaW5nTW9kZSgpLCBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpOwor
ICAgICAgICBtX2hhbmRsZSA9IFdURk1vdmUobmV3SGFuZGxlKTsKKwogICAgICAgICBBU1NFUlQo
bWVtb3J5KCkgPT0gbmV3TWVtb3J5KTsKICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MoKTsKICAgICB9
CiAgICAgY2FzZSBNZW1vcnlNb2RlOjpTaWduYWxpbmc6IHsKKyAgICAgICAgc2l6ZV90IGV4dHJh
Qnl0ZXMgPSBkZXNpcmVkU2l6ZSAtIHNpemUoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXh0
cmFCeXRlcyk7CisgICAgICAgIGJvb2wgYWxsb2NhdGlvblN1Y2Nlc3MgPSB0cnlBbGxvY2F0ZSgK
KyAgICAgICAgICAgIFsmXSAoKSAtPiBNZW1vcnlSZXN1bHQ6OktpbmQgeworICAgICAgICAgICAg
ICAgIHJldHVybiBtZW1vcnlNYW5hZ2VyKCkudHJ5QWxsb2NhdGVQaHlzaWNhbEJ5dGVzKGV4dHJh
Qnl0ZXMpOworICAgICAgICAgICAgfSwgbV9ub3RpZnlNZW1vcnlQcmVzc3VyZSwgbV9zeW5jVHJ5
VG9SZWNsYWltTWVtb3J5KTsKKyAgICAgICAgaWYgKCFhbGxvY2F0aW9uU3VjY2VzcykKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChHcm93RmFpbFJlYXNvbjo6T3V0T2ZNZW1vcnkp
OworCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1lbW9yeSgpKTsKKwogICAgICAgICAvLyBTaWdu
YWxpbmcgbWVtb3J5IG11c3QgaGF2ZSBiZWVuIHByZS1hbGxvY2F0ZWQgdmlydHVhbGx5LgotICAg
ICAgICB1aW50OF90KiBzdGFydEFkZHJlc3MgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWVtb3J5
KCkpICsgbV9zaXplOworICAgICAgICB1aW50OF90KiBzdGFydEFkZHJlc3MgPSBzdGF0aWNfY2Fz
dDx1aW50OF90Kj4obWVtb3J5KCkpICsgc2l6ZSgpOwogICAgICAgICAKICAgICAgICAgZGF0YUxv
Z0xuSWYodmVyYm9zZSwgIk1hcmtpbmcgV2ViQXNzZW1ibHkgbWVtb3J5J3MgIiwgUmF3UG9pbnRl
cihtZW1vcnkoKSksICIgYXMgcmVhZCt3cml0ZSBpbiByYW5nZSBbIiwgUmF3UG9pbnRlcihzdGFy
dEFkZHJlc3MpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXJ0QWRkcmVzcyArIGV4dHJhQnl0ZXMpLCAi
KSIpOwogICAgICAgICBpZiAobXByb3RlY3Qoc3RhcnRBZGRyZXNzLCBleHRyYUJ5dGVzLCBQUk9U
X1JFQUQgfCBQUk9UX1dSSVRFKSkgewogICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFp
bGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAgICAgICBtX21lbW9yeS5yZWNhZ2UobV9z
aXplLCBkZXNpcmVkU2l6ZSk7Ci0gICAgICAgIG1fc2l6ZSA9IGRlc2lyZWRTaXplOworCisgICAg
ICAgIG1faGFuZGxlLT5ncm93VG9TaXplKGRlc2lyZWRTaXplKTsKICAgICAgICAgcmV0dXJuIHN1
Y2Nlc3MoKTsKICAgICB9CiAgICAgfQpAQCAtNDU5LDcgKzYxNyw4IEBAIHZvaWQgTWVtb3J5Ojpy
ZWdpc3Rlckluc3RhbmNlKEluc3RhbmNlKiBpbnN0YW5jZSkKIAogdm9pZCBNZW1vcnk6OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBvdXQucHJpbnQoIk1lbW9yeSBhdCAiLCBS
YXdQb2ludGVyKG1lbW9yeSgpKSwgIiwgc2l6ZSAiLCBtX3NpemUsICJCIGNhcGFjaXR5ICIsIG1f
bWFwcGVkQ2FwYWNpdHksICJCLCBpbml0aWFsICIsIG1faW5pdGlhbCwgIiBtYXhpbXVtICIsIG1f
bWF4aW11bSwgIiBtb2RlICIsIG1ha2VTdHJpbmcobV9tb2RlKSk7CisgICAgYXV0byBoYW5kbGUg
PSBtX2hhbmRsZS5jb3B5UmVmKCk7CisgICAgb3V0LnByaW50KCJNZW1vcnkgYXQgIiwgUmF3UG9p
bnRlcihoYW5kbGUtPm1lbW9yeSgpKSwgIiwgc2l6ZSAiLCBoYW5kbGUtPnNpemUoKSwgIkIgY2Fw
YWNpdHkgIiwgaGFuZGxlLT5tYXBwZWRDYXBhY2l0eSgpLCAiQiwgaW5pdGlhbCAiLCBoYW5kbGUt
PmluaXRpYWwoKSwgIiBtYXhpbXVtICIsIGhhbmRsZS0+bWF4aW11bSgpLCAiIG1vZGUgIiwgbWFr
ZVN0cmluZyhoYW5kbGUtPm1vZGUoKSksICIgc2hhcmluZ01vZGUgIiwgbWFrZVN0cmluZyhoYW5k
bGUtPnNoYXJpbmdNb2RlKCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmgKaW5kZXggOTY3MDgzOGYxNzExZjgyZTdiYjRlMTVi
ZjhiNWRkM2I4NDgyNmI1MS4uMDFlMmQ0NmYwYTQ2NmZlOGY3ZDJmYWU5ZjI4NzcxNGVjZGZjZmQ2
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuaApAQCAtNDQsMzkgKzQ0
LDgwIEBAIGNsYXNzIFByaW50U3RyZWFtOwogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworCiBuYW1lc3BhY2UgV2FzbSB7CiAKIGNsYXNzIEluc3RhbmNl
OwogCi1jbGFzcyBNZW1vcnkgOiBwdWJsaWMgUmVmQ291bnRlZDxNZW1vcnk+IHsKK2NsYXNzIE1l
bW9yeUhhbmRsZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNZW1vcnlIYW5k
bGU+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZW1vcnlIYW5kbGUpOworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIGZyaWVuZCBMTEludE9mZnNldHNFeHRyYWN0b3I7Citw
dWJsaWM6CisgICAgTWVtb3J5SGFuZGxlKHZvaWQqLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG1hcHBl
ZENhcGFjaXR5LCBQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIE1lbW9yeVNo
YXJpbmdNb2RlLCBNZW1vcnlNb2RlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB+TWVtb3J5SGFu
ZGxlKCk7CisKKyAgICB2b2lkKiBtZW1vcnkoKSBjb25zdCB7IEFTU0VSVChtX21lbW9yeS5nZXRN
YXlCZU51bGwobV9tYXBwZWRDYXBhY2l0eSkgPT0gbV9tZW1vcnkuZ2V0VW5zYWZlKCkpOyByZXR1
cm4gbV9tZW1vcnkuZ2V0TWF5QmVOdWxsKG1fbWFwcGVkQ2FwYWNpdHkpOyB9CisgICAgc2l6ZV90
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBzaXplX3QgbWFwcGVkQ2FwYWNp
dHkoKSBjb25zdCB7IHJldHVybiBtX21hcHBlZENhcGFjaXR5OyB9CisgICAgUGFnZUNvdW50IGlu
aXRpYWwoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWw7IH0KKyAgICBQYWdlQ291bnQgbWF4aW11
bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11bTsgfQorICAgIE1lbW9yeVNoYXJpbmdNb2RlIHNo
YXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyaW5nTW9kZTsgfQorICAgIE1lbW9yeU1v
ZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qg
b2Zmc2V0T2ZTaXplKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1lbW9yeUhhbmRsZSwgbV9z
aXplKTsgfQorICAgIExvY2smIGxvY2soKSB7IHJldHVybiBtX2xvY2s7IH0KKworICAgIHZvaWQg
Z3Jvd1RvU2l6ZShzaXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIG1fc2l6ZSA9IHNpemU7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIHVzaW5nIENhZ2VkTWVtb3J5ID0gQ2FnZWRQdHI8R2lnYWNh
Z2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OworICAgIENhZ2VkTWVtb3J5IG1fbWVt
b3J5OworICAgIHNpemVfdCBtX3NpemUgeyAwIH07CisgICAgc2l6ZV90IG1fbWFwcGVkQ2FwYWNp
dHkgeyAwIH07CisgICAgUGFnZUNvdW50IG1faW5pdGlhbDsKKyAgICBQYWdlQ291bnQgbV9tYXhp
bXVtOworICAgIE1lbW9yeVNoYXJpbmdNb2RlIG1fc2hhcmluZ01vZGUgeyBNZW1vcnlTaGFyaW5n
TW9kZTo6RGVmYXVsdCB9OworICAgIE1lbW9yeU1vZGUgbV9tb2RlIHsgTWVtb3J5TW9kZTo6Qm91
bmRzQ2hlY2tpbmcgfTsKKyAgICBMb2NrIG1fbG9jazsKK307CisKK2NsYXNzIE1lbW9yeSBmaW5h
bCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lbW9yeT4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KE1lbW9yeSk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgZnJpZW5kIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKIHB1YmxpYzoKICAgICB2b2lkIGR1bXAoV1RGOjpQcmludFN0cmVh
bSYpIGNvbnN0OwogCi0gICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJu
ICEhbV9tZW1vcnk7IH0KKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1
cm4gISFtX2hhbmRsZS0+bWVtb3J5KCk7IH0KICAgICAKICAgICBlbnVtIE5vdGlmeVByZXNzdXJl
IHsgTm90aWZ5UHJlc3N1cmVUYWcgfTsKICAgICBlbnVtIFN5bmNUcnlUb1JlY2xhaW0geyBTeW5j
VHJ5VG9SZWNsYWltVGFnIH07CiAgICAgZW51bSBHcm93U3VjY2VzcyB7IEdyb3dTdWNjZXNzVGFn
IH07CiAKICAgICBzdGF0aWMgUmVmPE1lbW9yeT4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFJlZlB0
cjxNZW1vcnk+IHRyeUNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0s
IFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1
cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNs
YWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFn
ZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmPE1lbW9yeT4gY3JlYXRlKFJlZjxNZW1vcnlIYW5kbGU+JiYsIFdURjo6RnVuY3Rp
b248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVu
Y3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBX
VEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBn
cm93U3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBzdGF0aWMgUmVmUHRyPE1lbW9yeT4gdHJ5Q3JlYXRl
KFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgTWVtb3J5U2hhcmluZ01vZGUs
IFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1
cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNs
YWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFn
ZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKTsKIAotICAgIH5NZW1vcnkoKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSB+TWVtb3J5KCk7CiAKICAgICBzdGF0aWMgc2l6ZV90IGZhc3RNYXBw
ZWRSZWR6b25lQnl0ZXMoKTsKICAgICBzdGF0aWMgc2l6ZV90IGZhc3RNYXBwZWRCeXRlcygpOyAv
LyBJbmNsdWRlcyByZWR6b25lLgotICAgIHN0YXRpYyBib29sIGFkZHJlc3NJc0luQWN0aXZlRmFz
dE1lbW9yeSh2b2lkKik7Ci0KLSAgICB2b2lkKiBtZW1vcnkoKSBjb25zdCB7IEFTU0VSVChtX21l
bW9yeS5nZXRNYXlCZU51bGwoc2l6ZSgpKSA9PSBtX21lbW9yeS5nZXRVbnNhZmUoKSk7IHJldHVy
biBtX21lbW9yeS5nZXRNYXlCZU51bGwoc2l6ZSgpKTsgfQotICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAgUGFnZUNvdW50IHNpemVJblBhZ2VzKCkgY29uc3Qg
eyByZXR1cm4gUGFnZUNvdW50Ojpmcm9tQnl0ZXMobV9zaXplKTsgfQorICAgIHN0YXRpYyBib29s
IGFkZHJlc3NJc0luQWN0aXZlR3Jvd2FibGVNZW1vcnkodm9pZCopOwogCi0gICAgUGFnZUNvdW50
IGluaXRpYWwoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWw7IH0KLSAgICBQYWdlQ291bnQgbWF4
aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11bTsgfQorICAgIHZvaWQqIG1lbW9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1faGFuZGxlLT5tZW1vcnkoKTsgfQorICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9oYW5kbGUtPnNpemUoKTsgfQorICAgIFBhZ2VDb3VudCBzaXplSW5QYWdl
cygpIGNvbnN0IHsgcmV0dXJuIFBhZ2VDb3VudDo6ZnJvbUJ5dGVzKHNpemUoKSk7IH0KKyAgICBz
aXplX3QgYm91bmRzQ2hlY2tpbmdTaXplKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUtPm1hcHBl
ZENhcGFjaXR5KCk7IH0KKyAgICBQYWdlQ291bnQgaW5pdGlhbCgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFuZGxlLT5pbml0aWFsKCk7IH0KKyAgICBQYWdlQ291bnQgbWF4aW11bSgpIGNvbnN0IHsgcmV0
dXJuIG1faGFuZGxlLT5tYXhpbXVtKCk7IH0KKyAgICBNZW1vcnlIYW5kbGUmIGhhbmRsZSgpIHsg
cmV0dXJuIG1faGFuZGxlLmdldCgpOyB9CiAKLSAgICBNZW1vcnlNb2RlIG1vZGUoKSBjb25zdCB7
IHJldHVybiBtX21vZGU7IH0KKyAgICBNZW1vcnlTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1faGFuZGxlLT5zaGFyaW5nTW9kZSgpOyB9CisgICAgTWVtb3J5TW9kZSBt
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUtPm1vZGUoKTsgfQogCiAgICAgZW51bSBjbGFz
cyBHcm93RmFpbFJlYXNvbiB7CiAgICAgICAgIEludmFsaWREZWx0YSwKQEAgLTg5LDIxICsxMzAs
MTYgQEAgY2xhc3MgTWVtb3J5IDogcHVibGljIFJlZkNvdW50ZWQ8TWVtb3J5PiB7CiAKICAgICB2
b2lkIGNoZWNrKCkgeyAgQVNTRVJUKCFkZWxldGlvbkhhc0JlZ3VuKCkpOyB9CiAKLSAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mTWVtb3J5KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1l
bW9yeSwgbV9tZW1vcnkpOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNpemUoKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTWVtb3J5LCBtX3NpemUpOyB9CisgICAgc3RhdGljIHB0
cmRpZmZfdCBvZmZzZXRPZkhhbmRsZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihNZW1vcnks
IG1faGFuZGxlKTsgfQogCiBwcml2YXRlOgogICAgIE1lbW9yeSgpOwotICAgIE1lbW9yeSh2b2lk
KiBtZW1vcnksIFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgc2l6ZV90IG1h
cHBlZENhcGFjaXR5LCBNZW1vcnlNb2RlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1
cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU3luY1RyeVRv
UmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdy
b3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayk7
Ci0gICAgTWVtb3J5KFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgV1RGOjpG
dW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgV1RG
OjpGdW5jdGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1v
cnksIFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQp
PiYmIGdyb3dTdWNjZXNzQ2FsbGJhY2spOworICAgIE1lbW9yeShSZWY8TWVtb3J5SGFuZGxlPiYm
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNz
dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVj
bGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBh
Z2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayk7CisgICAgTWVtb3J5KFBhZ2VDb3VudCBp
bml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgTWVtb3J5U2hhcmluZ01vZGUsIFdURjo6RnVuY3Rp
b248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVu
Y3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBX
VEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBn
cm93U3VjY2Vzc0NhbGxiYWNrKTsKIAotICAgIHVzaW5nIENhZ2VkTWVtb3J5ID0gQ2FnZWRQdHI8
R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwotICAgIENhZ2VkTWVtb3J5
IG1fbWVtb3J5OwotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAgUGFnZUNvdW50IG1faW5p
dGlhbDsKLSAgICBQYWdlQ291bnQgbV9tYXhpbXVtOwotICAgIHNpemVfdCBtX21hcHBlZENhcGFj
aXR5IHsgMCB9OwotICAgIE1lbW9yeU1vZGUgbV9tb2RlIHsgTWVtb3J5TW9kZTo6Qm91bmRzQ2hl
Y2tpbmcgfTsKKyAgICBFeHBlY3RlZDxQYWdlQ291bnQsIEdyb3dGYWlsUmVhc29uPiBncm93U2hh
cmVkKFBhZ2VDb3VudCk7CisKKyAgICBSZWY8TWVtb3J5SGFuZGxlPiBtX2hhbmRsZTsKICAgICBX
VEY6OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiBtX25vdGlmeU1lbW9yeVByZXNzdXJl
OwogICAgIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4gbV9zeW5jVHJ5VG9S
ZWNsYWltTWVtb3J5OwogICAgIFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNv
dW50LCBQYWdlQ291bnQpPiBtX2dyb3dTdWNjZXNzQ2FsbGJhY2s7CkBAIC0xMTksNyArMTU1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIGNsYXNzIE1lbW9yeSB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIHNpemVfdCBtYXhGYXN0TWVtb3J5Q291bnQoKSB7IHJldHVybiAwOyB9
Ci0gICAgc3RhdGljIGJvb2wgYWRkcmVzc0lzSW5BY3RpdmVGYXN0TWVtb3J5KHZvaWQqKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBib29sIGFkZHJlc3NJc0luQWN0aXZlR3Jvd2FibGVN
ZW1vcnkodm9pZCopIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6V2FzbQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9y
eUluZm9ybWF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJ
bmZvcm1hdGlvbi5jcHAKaW5kZXggNmI0YzJkMWZkNzM4NGQ3ZGNhMzAzMThkNzJjMWY1NjExOWY1
ZjU2MC4uZjJjNmZhNTA4OTg4YzBjNDkwODAzNzE4MzIxNjg3MWU4NTQwY2ZlMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3Bw
CkBAIC00MiwxOSArNDIsMTkgQEAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBQaW5uZWRSZWdp
c3RlckluZm86OmdldCgpCiAgICAgICAgIGlmICghQ29udGV4dDo6dXNlRmFzdFRMUygpKQogICAg
ICAgICAgICAgKytudW1iZXJPZlBpbm5lZFJlZ2lzdGVyczsKICAgICAgICAgR1BSUmVnIGJhc2VN
ZW1vcnlQb2ludGVyID0gR1BSSW5mbzo6cmVnQ1MzOwotICAgICAgICBHUFJSZWcgc2l6ZVJlZ2lz
dGVyID0gR1BSSW5mbzo6cmVnQ1M0OworICAgICAgICBHUFJSZWcgYm91bmRzQ2hlY2tpbmdTaXpl
UmVnaXN0ZXIgPSBHUFJJbmZvOjpyZWdDUzQ7CiAgICAgICAgIEdQUlJlZyB3YXNtQ29udGV4dElu
c3RhbmNlUG9pbnRlciA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIGlmICghQ29udGV4dDo6dXNl
RmFzdFRMUygpKQogICAgICAgICAgICAgd2FzbUNvbnRleHRJbnN0YW5jZVBvaW50ZXIgPSBHUFJJ
bmZvOjpyZWdDUzA7CiAKLSAgICAgICAgc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvLmNvbnN0cnVj
dChzaXplUmVnaXN0ZXIsIGJhc2VNZW1vcnlQb2ludGVyLCB3YXNtQ29udGV4dEluc3RhbmNlUG9p
bnRlcik7CisgICAgICAgIHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mby5jb25zdHJ1Y3QoYm91bmRz
Q2hlY2tpbmdTaXplUmVnaXN0ZXIsIGJhc2VNZW1vcnlQb2ludGVyLCB3YXNtQ29udGV4dEluc3Rh
bmNlUG9pbnRlcik7CiAgICAgfSk7CiAKICAgICByZXR1cm4gc3RhdGljUGlubmVkUmVnaXN0ZXJJ
bmZvLmdldCgpOwogfQogCi1QaW5uZWRSZWdpc3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyhH
UFJSZWcgc2l6ZVJlZ2lzdGVyLCBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXIsIEdQUlJlZyB3YXNt
Q29udGV4dEluc3RhbmNlUG9pbnRlcikKLSAgICA6IHNpemVSZWdpc3RlcihzaXplUmVnaXN0ZXIp
CitQaW5uZWRSZWdpc3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyhHUFJSZWcgYm91bmRzQ2hl
Y2tpbmdTaXplUmVnaXN0ZXIsIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlciwgR1BSUmVnIHdhc21D
b250ZXh0SW5zdGFuY2VQb2ludGVyKQorICAgIDogYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIo
Ym91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIpCiAgICAgLCBiYXNlTWVtb3J5UG9pbnRlcihiYXNl
TWVtb3J5UG9pbnRlcikKICAgICAsIHdhc21Db250ZXh0SW5zdGFuY2VQb2ludGVyKHdhc21Db250
ZXh0SW5zdGFuY2VQb2ludGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uaAppbmRleCA0YjhlZjhlOGJjN2FjN2VmYzlhNzk5NDk0
ZTI2ODkxZmE4ZGQ2MjlmLi4yM2E4NjUzMGJhZTEwZmRmN2UwZDQyZTM1YWI5MDc3YmI3M2RmNjVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3Jt
YXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3Jt
YXRpb24uaApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNt
IHsKIAogc3RydWN0IFBpbm5lZFNpemVSZWdpc3RlckluZm8gewotICAgIEdQUlJlZyBzaXplUmVn
aXN0ZXI7CisgICAgR1BSUmVnIGJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyOwogICAgIHVuc2ln
bmVkIHNpemVPZmZzZXQ7CiB9OwogCkBAIC01NiwxMSArNTYsMTEgQEAgY2xhc3MgUGlubmVkUmVn
aXN0ZXJJbmZvIHsKICAgICAgICAgaWYgKHdhc21Db250ZXh0SW5zdGFuY2VQb2ludGVyICE9IElu
dmFsaWRHUFJSZWcpCiAgICAgICAgICAgICByZXN1bHQuc2V0KHdhc21Db250ZXh0SW5zdGFuY2VQ
b2ludGVyKTsKICAgICAgICAgaWYgKG1vZGUgIT0gTWVtb3J5TW9kZTo6U2lnbmFsaW5nKQotICAg
ICAgICAgICAgcmVzdWx0LnNldChzaXplUmVnaXN0ZXIpOworICAgICAgICAgICAgcmVzdWx0LnNl
dChib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogCi0gICAgR1BSUmVnIHNpemVSZWdpc3RlcjsKKyAgICBHUFJSZWcgYm91bmRzQ2hlY2tp
bmdTaXplUmVnaXN0ZXI7CiAgICAgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyOwogICAgIEdQUlJl
ZyB3YXNtQ29udGV4dEluc3RhbmNlUG9pbnRlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5TW9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtTWVtb3J5TW9kZS5jcHAKaW5kZXggYjFiYzk4NWRkNzZiYmZmYjVkMmJiNWEz
ZDEwOGMwNjdhNDczNzcyZC4uOWFkOGY4MGI2YWEyMmJmZjAzMmJkZDQ2ZDE3ODZlZmNkZWYzY2M0
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeU1vZGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlNb2RlLmNwcApA
QCAtNDIsNiArNDIsMTYgQEAgY29uc3QgY2hhciogbWFrZVN0cmluZyhNZW1vcnlNb2RlIG1vZGUp
CiAgICAgcmV0dXJuICIiOwogfQogCitjb25zdCBjaGFyKiBtYWtlU3RyaW5nKE1lbW9yeVNoYXJp
bmdNb2RlIHNoYXJpbmdNb2RlKQoreworICAgIHN3aXRjaCAoc2hhcmluZ01vZGUpIHsKKyAgICBj
YXNlIE1lbW9yeVNoYXJpbmdNb2RlOjpEZWZhdWx0OiByZXR1cm4gIkRlZmF1bHQiOworICAgIGNh
c2UgTWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZDogcmV0dXJuICJTaGFyZWQiOworICAgIH0KKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAiIjsKK30KKwogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlNb2RlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5TW9kZS5oCmluZGV4IGMwMzg3
NDZkNjFkNDJhOTUzY2NmNGI1ZDBmYjIwNzVlOTI2NTQxZjguLjUxYjIxMzM2Yzg5NDZiZGViODdj
ZjEzOTVhZDk5NzUzMTM1MTU4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21NZW1vcnlNb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bU1lbW9yeU1vZGUuaApAQCAtNDAsNiArNDAsMTMgQEAgZW51bSBjbGFzcyBNZW1vcnlNb2RlIDog
dWludDhfdCB7CiBzdGF0aWMgY29uc3RleHByIHNpemVfdCBOdW1iZXJPZk1lbW9yeU1vZGVzID0g
MjsKIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IGNoYXIqIG1ha2VTdHJpbmcoTWVtb3J5TW9kZSk7
CiAKK2VudW0gY2xhc3MgTWVtb3J5U2hhcmluZ01vZGUgOiB1aW50OF90IHsKKyAgICBEZWZhdWx0
LAorICAgIFNoYXJlZCwKK307CisKK0pTX0VYUE9SVF9QUklWQVRFIGNvbnN0IGNoYXIqIG1ha2VT
dHJpbmcoTWVtb3J5U2hhcmluZ01vZGUpOworCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQog
CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNUb1dhc20uY3BwCmluZGV4IGQ4ZDE1MjE0ZDQwZjBhODVjMzFmMmEyYjI5MmY4MzVk
M2YzNjlkNjYuLmJlOTQ4NzRhNWE0YjQ1N2QyMzJlZmQ4OGQ3NzlkMWJiM2Q5YjNmZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKQEAgLTIyMSw3ICsyMjEs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRlSlNUb1dhc21XcmFw
cGVyKENDYWxsSGVscGVycyYgaml0LCBjb25zdAogCiAgICAgaWYgKCEhaW5mby5tZW1vcnkpIHsK
ICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVy
OwotICAgICAgICBHUFJSZWcgc2NyYXRjaE9yU2l6ZSA9IHdhc21DYWxsaW5nQ29udmVudGlvbigp
LnByb2xvZ3VlU2NyYXRjaEdQUnNbMF07CisgICAgICAgIEdQUlJlZyBzY3JhdGNoT3JCb3VuZHND
aGVja2luZ1NpemUgPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5wcm9sb2d1ZVNjcmF0Y2hHUFJz
WzBdOwogCiAgICAgICAgIGlmIChDb250ZXh0Ojp1c2VGYXN0VExTKCkpCiAgICAgICAgICAgICBq
aXQubG9hZFdhc21Db250ZXh0SW5zdGFuY2UoYmFzZU1lbW9yeSk7CkBAIC0yMjksMTUgKzIyOSwx
NSBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRlSlNUb1dhc21XcmFw
cGVyKENDYWxsSGVscGVycyYgaml0LCBjb25zdAogICAgICAgICBHUFJSZWcgY3VycmVudEluc3Rh
bmNlR1BSID0gQ29udGV4dDo6dXNlRmFzdFRMUygpID8gYmFzZU1lbW9yeSA6IHdhc21Db250ZXh0
SW5zdGFuY2VHUFI7CiAgICAgICAgIGlmIChpc0FSTTY0RSgpKSB7CiAgICAgICAgICAgICBpZiAo
bW9kZSAhPSBXYXNtOjpNZW1vcnlNb2RlOjpTaWduYWxpbmcpCi0gICAgICAgICAgICAgICAgc2Ny
YXRjaE9yU2l6ZSA9IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyOwotICAgICAgICAgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGN1cnJlbnRJbnN0YW5jZUdQUiwgV2FzbTo6SW5z
dGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSwgc2NyYXRjaE9yU2l6ZSk7CisgICAg
ICAgICAgICAgICAgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplID0gcGlubmVkUmVncy5ib3Vu
ZHNDaGVja2luZ1NpemVSZWdpc3RlcjsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhjdXJyZW50SW5zdGFuY2VHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRP
ZkNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpKSwgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXpl
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChtb2RlICE9IFdhc206Ok1lbW9y
eU1vZGU6OlNpZ25hbGluZykKLSAgICAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoY3VycmVudEluc3RhbmNlR1BSLCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZD
YWNoZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlcik7CisgICAgICAgICAg
ICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGN1cnJlbnRJbnN0YW5jZUdQ
UiwgV2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkpLCBw
aW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsKICAgICAgICAgfQogCiAgICAg
ICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjdXJyZW50SW5zdGFuY2VHUFIs
IFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7Ci0g
ICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVt
b3J5LCBzY3JhdGNoT3JTaXplLCBzY3JhdGNoT3JTaXplKTsKKyAgICAgICAgaml0LmNhZ2VDb25k
aXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHNjcmF0Y2hPckJvdW5k
c0NoZWNraW5nU2l6ZSwgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplKTsKICAgICB9CiAKICAg
ICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC50aHJlYWRTYWZlUGF0Y2hhYmxlTmVhckNh
bGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5SW5zdGFuY2UuY3BwCmluZGV4IDY2OTYxYzIzMmE0ZWE0ZTQ3NGY2NzczOTMyMzJjZDFl
YTJlYzRjNTkuLmU0OWZjNjkyNWE5OTVlNWUwYWY1OWJlZjNlNjAyMGZiZDQwM2JhMGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5j
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUlu
c3RhbmNlLmNwcApAQCAtMjkxLDcgKzI5MSw3IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNX
ZWJBc3NlbWJseUluc3RhbmNlOjp0cnlDcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCoKICAg
ICAgICAgICAgIGF1dG8qIGpzTWVtb3J5ID0gSlNXZWJBc3NlbWJseU1lbW9yeTo6dHJ5Q3JlYXRl
KGdsb2JhbE9iamVjdCwgdm0sIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlNZW1vcnlTdHJ1Y3R1
cmUoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxw
dHIpOwogCi0gICAgICAgICAgICBSZWZQdHI8V2FzbTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpN
ZW1vcnk6OnRyeUNyZWF0ZShtb2R1bGVJbmZvcm1hdGlvbi5tZW1vcnkuaW5pdGlhbCgpLCBtb2R1
bGVJbmZvcm1hdGlvbi5tZW1vcnkubWF4aW11bSgpLAorICAgICAgICAgICAgUmVmUHRyPFdhc206
Ok1lbW9yeT4gbWVtb3J5ID0gV2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUobW9kdWxlSW5mb3JtYXRp
b24ubWVtb3J5LmluaXRpYWwoKSwgbW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5Lm1heGltdW0oKSwg
V2FzbTo6TWVtb3J5U2hhcmluZ01vZGU6OkRlZmF1bHQsCiAgICAgICAgICAgICAgICAgWyZ2bV0g
KFdhc206Ok1lbW9yeTo6Tm90aWZ5UHJlc3N1cmUpIHsgdm0uaGVhcC5jb2xsZWN0QXN5bmMoQ29s
bGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgICAgICAgICBbJnZtXSAoV2FzbTo6TWVt
b3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7IHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVjdGlvblNj
b3BlOjpGdWxsKTsgfSwKICAgICAgICAgICAgICAgICBbJnZtLCBqc01lbW9yeV0gKFdhc206Ok1l
bW9yeTo6R3Jvd1N1Y2Nlc3MsIFdhc206OlBhZ2VDb3VudCBvbGRQYWdlQ291bnQsIFdhc206OlBh
Z2VDb3VudCBuZXdQYWdlQ291bnQpIHsganNNZW1vcnktPmdyb3dTdWNjZXNzQ2FsbGJhY2sodm0s
IG9sZFBhZ2VDb3VudCwgbmV3UGFnZUNvdW50KTsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCmluZGV4IGRmYjAyNzAz
MTYzMmUwM2JlM2YzOWI1OGY5OGIzNmU4MmY3MjYyM2YuLmY3YWM2NDQ5ODIxYmYxMDdhMTRmNzQ4
ZDAxMmQxZjI5YzdiNzNlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNs
dWRlICJBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKKyNpbmNsdWRl
ICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzIsMTcgKzcz
LDM0IEBAIEpTV2ViQXNzZW1ibHlNZW1vcnk6OkpTV2ViQXNzZW1ibHlNZW1vcnkoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotSlNBcnJheUJ1ZmZlciogSlNXZWJBc3NlbWJs
eU1lbW9yeTo6YnVmZmVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pT
QXJyYXlCdWZmZXIqIEpTV2ViQXNzZW1ibHlNZW1vcnk6OmJ1ZmZlcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogewotICAgIGlmIChtX2J1ZmZlcldyYXBwZXIpCi0gICAgICAgIHJldHVy
biBtX2J1ZmZlcldyYXBwZXIuZ2V0KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
YXV0byogd3JhcHBlciA9IG1fYnVmZmVyV3JhcHBlci5nZXQoKTsKKyAgICBpZiAod3JhcHBlcikg
eworICAgICAgICBpZiAobV9tZW1vcnktPnNoYXJpbmdNb2RlKCkgPT0gV2FzbTo6TWVtb3J5U2hh
cmluZ01vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAotICAgIC8v
IFdlIGNhbid0IHVzZSBhIHJlZiBoZXJlIHNpbmNlIGl0IGRvZXNuJ3QgaGF2ZSBhIGNvcHkgY29u
c3RydWN0b3IuLi4KLSAgICBSZWY8V2FzbTo6TWVtb3J5PiBwcm90ZWN0ZWRNZW1vcnkgPSBtX21l
bW9yeS5nZXQoKTsKLSAgICBhdXRvIGRlc3RydWN0b3IgPSBjcmVhdGVTaGFyZWRUYXNrPHZvaWQo
dm9pZCopPihbcHJvdGVjdGVkTWVtb3J5ID0gV1RGTW92ZShwcm90ZWN0ZWRNZW1vcnkpXSAodm9p
ZCopIHsgfSk7CisgICAgICAgIEFTU0VSVChtX21lbW9yeS0+c2hhcmluZ01vZGUoKSA9PSBXYXNt
OjpNZW1vcnlTaGFyaW5nTW9kZTo6U2hhcmVkKTsKKyAgICAgICAgLy8gSWYgU2hhcmVkQXJyYXlC
dWZmZXIncyB1bmRlcmx5aW5nIG1lbW9yeSBpcyBub3QgZ3Jvd24sIHdlIGNvbnRpbnVlIHVzaW5n
IGNhY2hlZCB3cmFwcGVyLgorICAgICAgICBpZiAod3JhcHBlci0+aW1wbCgpLT5ieXRlTGVuZ3Ro
KCkgPT0gbWVtb3J5KCkuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAg
fQorCisgICAgUmVmPFdhc206Ok1lbW9yeUhhbmRsZT4gcHJvdGVjdGVkSGFuZGxlID0gbV9tZW1v
cnktPmhhbmRsZSgpOworICAgIGF1dG8gZGVzdHJ1Y3RvciA9IGNyZWF0ZVNoYXJlZFRhc2s8dm9p
ZCh2b2lkKik+KFtwcm90ZWN0ZWRIYW5kbGUgPSBXVEZNb3ZlKHByb3RlY3RlZEhhbmRsZSldICh2
b2lkKikgeyB9KTsKICAgICBtX2J1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMo
bWVtb3J5KCkubWVtb3J5KCksIG1lbW9yeSgpLnNpemUoKSwgV1RGTW92ZShkZXN0cnVjdG9yKSk7
CiAgICAgbV9idWZmZXItPm1ha2VXYXNtTWVtb3J5KCk7Ci0gICAgbV9idWZmZXJXcmFwcGVyLnNl
dCh2bSwgdGhpcywgSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5
QnVmZmVyU3RydWN0dXJlKEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpLCBtX2J1ZmZl
ci5nZXQoKSkpOworICAgIGlmIChtX21lbW9yeS0+c2hhcmluZ01vZGUoKSA9PSBXYXNtOjpNZW1v
cnlTaGFyaW5nTW9kZTo6U2hhcmVkKQorICAgICAgICBtX2J1ZmZlci0+bWFrZVNoYXJlZCgpOwor
ICAgIGF1dG8qIGFycmF5QnVmZmVyID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QtPmFycmF5QnVmZmVyU3RydWN0dXJlKG1fYnVmZmVyLT5zaGFyaW5nTW9kZSgpKSwgbV9i
dWZmZXIuZ2V0KCkpOworICAgIGlmIChtX21lbW9yeS0+c2hhcmluZ01vZGUoKSA9PSBXYXNtOjpN
ZW1vcnlTaGFyaW5nTW9kZTo6U2hhcmVkKSB7CisgICAgICAgIG9iamVjdENvbnN0cnVjdG9yRnJl
ZXplKGdsb2JhbE9iamVjdCwgYXJyYXlCdWZmZXIpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIG1fYnVmZmVyV3JhcHBlci5zZXQodm0s
IHRoaXMsIGFycmF5QnVmZmVyKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX2J1ZmZlcldyYXBwZXIp
OwogICAgIHJldHVybiBtX2J1ZmZlcldyYXBwZXIuZ2V0KCk7CiB9CkBAIC0xMTcsNyArMTM1LDgg
QEAgdm9pZCBKU1dlYkFzc2VtYmx5TWVtb3J5Ojpncm93U3VjY2Vzc0NhbGxiYWNrKFZNJiB2bSwg
V2FzbTo6UGFnZUNvdW50IG9sZFBhZ2VDb3UKIHsKICAgICAvLyBXZSBuZWVkIHRvIGNsZWFyIG91
dCB0aGUgb2xkIGFycmF5IGJ1ZmZlciBiZWNhdXNlIGl0IG1pZ2h0IG5vdyBiZSBwb2ludGluZyB0
byBzdGFsZSBtZW1vcnkuCiAgICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyLT5k
ZXRhY2godm0pOworICAgICAgICBpZiAobV9tZW1vcnktPnNoYXJpbmdNb2RlKCkgPT0gV2FzbTo6
TWVtb3J5U2hhcmluZ01vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICBtX2J1ZmZlci0+ZGV0YWNo
KHZtKTsKICAgICAgICAgbV9idWZmZXIgPSBudWxscHRyOwogICAgICAgICBtX2J1ZmZlcldyYXBw
ZXIuY2xlYXIoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5TWVtb3J5LmgKaW5kZXggYWI5YzQ3NDZiM2NmYTI1MGQ1MWViY2RmNDJi
M2E1ZmRiOWFiNTU1ZC4uZTQ5NDkwMzY5MmU1OTU0MWNmYTc5MDMzNzZhNDUzMmYwNTYzYTQ0OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1l
bW9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlN
ZW1vcnkuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCi0j
aW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgog
I2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgpAQCAtNDksMTYgKzQ5LDE2IEBAIGNsYXNzIEpTV2ViQXNzZW1ibHlNZW1v
cnkgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgICAgIHJldHVybiB2bS53
ZWJBc3NlbWJseU1lbW9yeVNwYWNlPG1vZGU+KCk7CiAgICAgfQogCi0gICAgc3RhdGljIEpTV2Vi
QXNzZW1ibHlNZW1vcnkqIHRyeUNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFZNJiwgU3RydWN0dXJl
Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTV2ViQXNzZW1ibHlNZW1vcnkqIHRy
eUNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
IAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAgICB2b2lkIGFkb3B0KFJlZjxXYXNtOjpN
ZW1vcnk+JiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRvcHQoUmVmPFdhc206Ok1l
bW9yeT4mJik7CiAgICAgV2FzbTo6TWVtb3J5JiBtZW1vcnkoKSB7IHJldHVybiBtX21lbW9yeS5n
ZXQoKTsgfQotICAgIEpTQXJyYXlCdWZmZXIqIGJ1ZmZlcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
Kik7CisgICAgSlNBcnJheUJ1ZmZlciogYnVmZmVyKEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgV2Fz
bTo6UGFnZUNvdW50IGdyb3coVk0mLCBKU0dsb2JhbE9iamVjdCosIHVpbnQzMl90IGRlbHRhKTsK
LSAgICB2b2lkIGdyb3dTdWNjZXNzQ2FsbGJhY2soVk0mLCBXYXNtOjpQYWdlQ291bnQgb2xkUGFn
ZUNvdW50LCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50KTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGdyb3dTdWNjZXNzQ2FsbGJhY2soVk0mLCBXYXNtOjpQYWdlQ291bnQgb2xkUGFn
ZUNvdW50LCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50KTsKIAogcHJpdmF0ZToKICAgICBK
U1dlYkFzc2VtYmx5TWVtb3J5KFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCmluZGV4IDk5Mjc2
YzJkOWU2MjdhZDIxNTNkZGZjYTQ5Yzc3OGUwYzc5YzgzY2EuLjc4ZGE2ZGMzZjRlYWVhZDNjODAw
YWU0MmVjMGU2ODgxNzY1ZTQ2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC0zNTcsMjAgKzM1NywyMCBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gV2ViQXNzZW1ibHlGdW5jdGlvbjo6
anNDYWxsRW50cnlwb2ludFNsb3coKQogCiAgICAgaWYgKCEhbW9kdWxlSW5mb3JtYXRpb24ubWVt
b3J5KSB7CiAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5
UG9pbnRlcjsKLSAgICAgICAgR1BSUmVnIHNjcmF0Y2hPclNpemUgPSBzdGFja0xpbWl0R1BSOwor
ICAgICAgICBHUFJSZWcgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplID0gc3RhY2tMaW1pdEdQ
UjsKICAgICAgICAgYXV0byBtb2RlID0gaW5zdGFuY2UoKS0+bWVtb3J5TW9kZSgpOwogCiAgICAg
ICAgIGlmIChpc0FSTTY0RSgpKSB7CiAgICAgICAgICAgICBpZiAobW9kZSAhPSBXYXNtOjpNZW1v
cnlNb2RlOjpTaWduYWxpbmcpCi0gICAgICAgICAgICAgICAgc2NyYXRjaE9yU2l6ZSA9IHBpbm5l
ZFJlZ3Muc2l6ZVJlZ2lzdGVyOwotICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9y
eVNpemUoKSksIHNjcmF0Y2hPclNpemUpOworICAgICAgICAgICAgICAgIHNjcmF0Y2hPckJvdW5k
c0NoZWNraW5nU2l6ZSA9IHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXI7Cisg
ICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwg
V2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkpLCBzY3Jh
dGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
aWYgKG1vZGUgIT0gV2FzbTo6TWVtb3J5TW9kZTo6U2lnbmFsaW5nKQotICAgICAgICAgICAgICAg
IGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBXYXNtOjpJbnN0
YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rl
cik7CisgICAgICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNj
cmF0Y2hHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNraW5nU2l6
ZSgpKSwgcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7CiAgICAgICAgIH0K
IAogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwg
V2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKLSAg
ICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1v
cnksIHNjcmF0Y2hPclNpemUsIHNjcmF0Y2hPclNpemUpOworICAgICAgICBqaXQuY2FnZUNvbmRp
dGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgc2NyYXRjaE9yQm91bmRz
Q2hlY2tpbmdTaXplLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOwogICAgIH0KIAogICAg
IC8vIFdlIHVzZSB0aGlzIGNhbGxlZSB0byBpbmRpY2F0ZSBob3cgdG8gdW53aW5kIHBhc3QgdGhl
c2UgdHlwZXMgb2YgZnJhbWVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcAppbmRleCA1MGNj
Y2EyNDFmZDViZTk3OTU2ZGYwODhiOTRhOGQ4YWIwZmYwZDA1Li4yNTZlYjBmZmMzNGFiNzM1YmM1
MzI4N2M3NWY2YjA3ZWM2YjhmN2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcApAQCAt
NTYsOCArNTYsNiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0SlNXZWJBc3Nl
bWJseU1lbW9yeSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgIT0gMSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJXZWJBc3NlbWJseS5NZW1v
cnkgZXhwZWN0cyBleGFjdGx5IG9uZSBhcmd1bWVudCJfcykpKTsKIAogICAgIEpTT2JqZWN0KiBt
ZW1vcnlEZXNjcmlwdG9yOwogICAgIHsKQEAgLTEwMiwxMCArMTAwLDIzIEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TWVtb3J5LCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBXYXNtOjpNZW1vcnlTaGFyaW5n
TW9kZSBzaGFyaW5nTW9kZSA9IFdhc206Ok1lbW9yeVNoYXJpbmdNb2RlOjpEZWZhdWx0OworICAg
IEpTVmFsdWUgc2hhcmVkVmFsdWUgPSBtZW1vcnlEZXNjcmlwdG9yLT5nZXQoZ2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2hhcmVkIikpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgYm9vbCBzaGFyZWQg
PSBzaGFyZWRWYWx1ZS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGlmIChzaGFyZWQpIHsK
KyAgICAgICAgaWYgKCFtYXhpbXVtUGFnZUNvdW50KQorICAgICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiJ21heGltdW0nIHBhZ2UgY291
bnQgbXVzdCBiZSBkZWZpbmVkIGlmICdzaGFyZWQnIGlzIHRydWUiX3MpOworICAgICAgICBpZiAo
IU9wdGlvbnM6OnVzZVNoYXJlZEFycmF5QnVmZmVyKCkpCisgICAgICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJTaGFyZWQgV2ViQXNzZW1i
bHkuTWVtb3J5IGFuZCBTaGFyZWRBcnJheUJ1ZmZlciBhcmUgbm90IGVuYWJsZWQiX3MpOworICAg
ICAgICBzaGFyaW5nTW9kZSA9IFdhc206Ok1lbW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQ7CisgICAg
fQorCiAgICAgYXV0byoganNNZW1vcnkgPSBKU1dlYkFzc2VtYmx5TWVtb3J5Ojp0cnlDcmVhdGUo
Z2xvYmFsT2JqZWN0LCB2bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseU1lbW9yeVN0cnVjdHVy
ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogCi0gICAgUmVmUHRyPFdhc206Ok1lbW9yeT4gbWVtb3J5ID0gV2FzbTo6TWVtb3J5Ojp0
cnlDcmVhdGUoaW5pdGlhbFBhZ2VDb3VudCwgbWF4aW11bVBhZ2VDb3VudCwKKyAgICBSZWZQdHI8
V2FzbTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OnRyeUNyZWF0ZShpbml0aWFsUGFn
ZUNvdW50LCBtYXhpbXVtUGFnZUNvdW50LCBzaGFyaW5nTW9kZSwKICAgICAgICAgWyZ2bV0gKFdh
c206Ok1lbW9yeTo6Tm90aWZ5UHJlc3N1cmUpIHsgdm0uaGVhcC5jb2xsZWN0QXN5bmMoQ29sbGVj
dGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgWyZ2bV0gKFdhc206Ok1lbW9yeTo6U3luY1Ry
eVRvUmVjbGFpbSkgeyB2bS5oZWFwLmNvbGxlY3RTeW5jKENvbGxlY3Rpb25TY29wZTo6RnVsbCk7
IH0sCiAgICAgICAgIFsmdm0sIGpzTWVtb3J5XSAoV2FzbTo6TWVtb3J5OjpHcm93U3VjY2Vzcywg
V2FzbTo6UGFnZUNvdW50IG9sZFBhZ2VDb3VudCwgV2FzbTo6UGFnZUNvdW50IG5ld1BhZ2VDb3Vu
dCkgeyBqc01lbW9yeS0+Z3Jvd1N1Y2Nlc3NDYWxsYmFjayh2bSwgb2xkUGFnZUNvdW50LCBuZXdQ
YWdlQ291bnQpOyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcAppbmRleCBhYjRhMmJmZWVlZmE2
ODQxN2MzOGNjMTk1NGU1ZTk3ZjYyZjYwMDliLi43ZTIwOGMzMTAxYzIzNzE2MzIyOWNjNTc5Mjdh
ZWE2YjhmMGIyNWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCkBAIC05Myw3ICs5Myw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0J1ZmZl
ciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iCiAKICAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiBtZW1v
cnkgPSBnZXRNZW1vcnkoZ2xvYmFsT2JqZWN0LCB2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
IAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKG1lbW9yeS0+YnVmZmVyKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFs
T2JqZWN0KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShtZW1vcnktPmJ1ZmZlcihnbG9iYWxPYmplY3QpKSk7CiB9CiAKIFdlYkFzc2VtYmx5TWVt
b3J5UHJvdG90eXBlKiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcApp
bmRleCAzMWMyMWUzYzQzNzAyYzk5ZmI2ZjgwOTU0ZDBjNWU0NzdkNzBkZjdkLi45ZGQyZTdiZjUy
MTg3ZmIzNDVlZWYwZTdmNGZhMjYzNDViMmVhNDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCkBAIC01
NjYsOCArNTY2LDkgQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB9OwogCiAgICAgYXV0byBmb3JFYWNo
U2VnbWVudCA9IFsmXSAoYXV0byBmbikgewotICAgICAgICB1aW50OF90KiBtZW1vcnkgPSByZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QqPihtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmNhY2hlZE1lbW9y
eSgpKTsKLSAgICAgICAgdWludDY0X3Qgc2l6ZUluQnl0ZXMgPSBtX2luc3RhbmNlLT5pbnN0YW5j
ZSgpLmNhY2hlZE1lbW9yeVNpemUoKTsKKyAgICAgICAgYXV0byB3YXNtTWVtb3J5ID0gbV9pbnN0
YW5jZS0+aW5zdGFuY2UoKS5tZW1vcnkoKTsKKyAgICAgICAgdWludDhfdCogbWVtb3J5ID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4od2FzbU1lbW9yeS0+bWVtb3J5KCkpOworICAgICAgICB1
aW50NjRfdCBzaXplSW5CeXRlcyA9IHdhc21NZW1vcnktPnNpemUoKTsKIAogICAgICAgICBmb3Ig
KGNvbnN0IFdhc206OlNlZ21lbnQ6OlB0ciYgc2VnbWVudCA6IGRhdGEpIHsKICAgICAgICAgICAg
IHVpbnQzMl90IG9mZnNldCA9IHNlZ21lbnQtPm9mZnNldC5pc0dsb2JhbEltcG9ydCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQppbmRleCBiZWIwMDYwYmFlYTQzOTRhMDUwNGNjZWQyNjdlNjI2MDBhMzk2Yjc2
Li4xMTdkZTNiODMwY2UyOWM3MDM4YWFhNTRmM2E4ZGExZDcyMjdlODM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKQEAgLTE1NTksNiArMTU1OSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JL
X0hFQURFUlMKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCiAgICAgd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXJDbGllbnQuaAogICAgIHdvcmtlcnMvV29ya2VyVGhyZWFkLmgKKyAg
ICB3b3JrZXJzL1dvcmtlclRocmVhZFR5cGUuaAogICAgIHdvcmtlcnMvV29ya2VyVHlwZS5oCiAK
ICAgICB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
aWFsaXphdGlvbkNvbnRleHQuY3BwCmluZGV4IDlhYzg4ZWJmZDc3NzhiZDdkMWQzMTJmYzc2MDhm
MWVjOWFhMTFkMzQuLmE2MWNiMDRlNGRiOTU1Nzk1MjU5NDM4NzFhZWZhNDQzNjE1ZTM1YzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmNwcApAQCAtNzksNyArNzksNyBAQCB2
b2lkIElEQlNlcmlhbGl6YXRpb25Db250ZXh0Ojppbml0aWFsaXplVk0oKQogICAgIEFTU0VSVCgh
bV9nbG9iYWxPYmplY3QpOwogICAgIG1fdm0gPSBKU0M6OlZNOjpjcmVhdGUoKTsKICAgICBtX3Zt
LT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsKLSAgICBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdv
cmxkKG1fdm0uZ2V0KCkpOworICAgIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29ybGQobV92
bS5nZXQoKSwgV29ya2VyVGhyZWFkVHlwZTo6V29ya2xldCk7CiAKICAgICBKU0M6OkpTTG9ja0hv
bGRlciBsb2NrZXIobV92bS5nZXQoKSk7CiAgICAgbV9nbG9iYWxPYmplY3Quc2V0KCptX3ZtLCBK
U0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q6OmNyZWF0ZSgqbV92bSwgSlNJREJTZXJpYWxp
emF0aW9uR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIEpTQzo6anNOdWxsKCkp
LCBub3JtYWxXb3JsZCgqbV92bSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5ZmEwOTVmOWE1Nzc2YTNhNDkyZjMwMWNmMjc2
N2I4MTkxYTVjZjVlLi4yYTM4YzMwYTJkZTViMzE0MDZmODM4NmE0ZDg4MmMyYmU0NzkxNjgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC01MDA3LDYgKzUwMDcsNyBAQAogCQlFMzk2MjhDMTIzOTU3NDMxMDA2NThFQ0QgLyogTW90
aW9uTWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM5NjI4QzAyMzk1NzQzMDAwNjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGllbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0E3
NzY2NzFEQzg1RDI4MDBCNjkwRDggLyogRE9NSklUSURMQ29udmVydC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNzc2NjUxREM4NUQyMjAwQjY5MEQ4
IC8qIERPTUpJVElETENvbnZlcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFM0E3NzY2ODFEQzg1RDI4MDBCNjkwRDggLyogRE9NSklUSURMVHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNzc2
NjYxREM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFM0FGRDdBRDI1NUY1MEVCMDBFNUUzMEUg
LyogV29ya2VyVGhyZWFkVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNBRkQ3QUIyNTVGNTBEQzAwRTVFMzBFIC8qIFdvcmtlclRocmVhZFR5cGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0Iy
RjBFRDFEN0Y0Q0EzMDBCMEM5RDEgLyogTG9hZGFibGVTY3JpcHQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQjJGMEU3MUQ3RjM1RUMwMEIwQzlEMSAv
KiBMb2FkYWJsZVNjcmlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzQjJGMEVFMUQ3RjRDQTkwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdENs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNC
MkYwRTgxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlU2NyaXB0Q2xpZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNCMkYwRjAxRDdGNENC
NTAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCMkYwRTQxRDdGMzVFQzAwQjBDOUQxIC8qIExv
YWRhYmxlQ2xhc3NpY1NjcmlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0xNjAyNCw2ICsxNjAyNSw3IEBACiAJCUUzQTc3NjY2MURDODVEMjIw
MEI2OTBEOCAvKiBET01KSVRJRExUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERPTUpJVElETFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBRTZD
RDEyMjUyRjI3MDAwQzcwQjUwIC8qIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0FGQTk2NDFEQTZFOTA4MDAyODYx
QkQgLyogSlNOb2RlRE9NSklULmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTTm9kZURPTUpJVC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQUZE
N0FCMjU1RjUwREMwMEU1RTMwRSAvKiBXb3JrZXJUaHJlYWRUeXBlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdvcmtlclRocmVhZFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNCMkYw
RTMxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0IyRjBFNDFEN0YzNUVDMDBCMEM5RDEgLyog
TG9hZGFibGVDbGFzc2ljU2NyaXB0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
M0IyRjBFNzFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVTY3JpcHQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTG9hZGFibGVTY3JpcHQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE4OTkzLDYgKzE4OTk1LDcgQEAKIAkJCQkyRUE3NjgwMzBGRTcxMjY0MDBB
QjlDOEEgLyogV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmggKi8sCiAJCQkJMkU0MzQ2NDIwRjU0
NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5jcHAgKi8sCiAJCQkJMkU0MzQ2NDMwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5oICovLAorCQkJCUUzQUZEN0FCMjU1RjUwREMwMEU1
RTMwRSAvKiBXb3JrZXJUaHJlYWRUeXBlLmggKi8sCiAJCQkJNTFGMTc0RkMxRjM1ODk4ODAwQzc0
OTUwIC8qIFdvcmtlclR5cGUuaCAqLywKIAkJCQk1MUYxNzRGQTFGMzU4OEQ3MDBDNzQ5NTAgLyog
V29ya2VyVHlwZS5pZGwgKi8sCiAJCQkpOwpAQCAtMzUxMDEsNiArMzUxMDQsNyBAQAogCQkJCTJF
NDM0NjU1MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBCOTA1NkY5MEYyNjg1RjMwMDk1RkY2QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQyRDE0RkEwOUQ1MDA3NDU3QUUgLyogV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzQUZEN0FEMjU1
RjUwRUIwMEU1RTMwRSAvKiBXb3JrZXJUaHJlYWRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTRBMEM2ODFEQjgwN0Q5MDAxN0E5MEIgLyogV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MUYxNzRGRTFGMzU4OTkyMDBDNzQ5NTAgLyogV29ya2VyVHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEJERUEzMjAyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmts
ZXQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
SURMVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKaW5kZXggN2U4
NTU5MDVmOTA5Nzk3N2IzMzVkMzQwNTc2MWQyYWUxNzY3NzYxZi4uYTBjZTUwNjRhY2FjZjM2ZjMw
YTMxMzJkY2Y3NzdjYTcyN2Y5ZWViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvSURMVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCkBA
IC0xNTEsNiArMTUxLDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExSZXF1aXJl
c0V4aXN0aW5nQXRvbVN0cmluZ0FkYXB0b3IgOiBJRExTdHJpbmc8QXRvCiAgICAgdXNpbmcgSW5u
ZXJUeXBlID0gVDsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExBbGxvd1No
YXJlZEFkYXB0b3IgOiBUIHsKKyAgICB1c2luZyBJbm5lclR5cGUgPSBUOworfTsKKwogc3RydWN0
IElETE9iamVjdCA6IElETFR5cGU8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+IHsKICAgICB1
c2luZyBOdWxsYWJsZVR5cGUgPSBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PjsKIApAQCAtMzIz
LDQgKzMyNywxMCBAQCBzdHJ1Y3QgSXNJRExGbG9hdGluZ1BvaW50IDogcHVibGljIHN0ZDo6aW50
ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgV1RGOjpJc0Jhc2VPZlRlbQogdGVtcGxhdGU8dHlwZW5hbWUg
VD4KIHN0cnVjdCBJc0lETFR5cGVkQXJyYXkgOiBwdWJsaWMgc3RkOjppbnRlZ3JhbF9jb25zdGFu
dDxib29sLCBXVEY6OklzQmFzZU9mVGVtcGxhdGU8SURMVHlwZWRBcnJheSwgVD46OnZhbHVlPiB7
IH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNJRExBcnJheUJ1ZmZlciA6IHB1
YmxpYyBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHN0ZDo6aXNfYmFzZV9vZjxJRExBcnJh
eUJ1ZmZlciwgVD46OnZhbHVlPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3Qg
SXNJRExBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29s
LCBzdGQ6OmlzX2Jhc2Vfb2Y8SURMQXJyYXlCdWZmZXJWaWV3LCBUPjo6dmFsdWU+IHsgfTsKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvQ29tbW9uVk0uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0u
Y3BwCmluZGV4IDljZTYzYTBhN2ZjNmExZDYyMzc1OTA1ODk1NTc2MDAyMjQ4MDA4MTQuLmQzNWJl
ZDMwZmY0NWRhYmQ2ZDY3MzI0ZDM0YWI0N2ZjM2Y3Y2RkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Db21tb25WTS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgSlNDOjpWTSYgY29tbW9uVk1T
bG93KCkKIAogICAgIHZtLnNldEdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KGds
b2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KCkpOwogCi0gICAgSlNWTUNsaWVudERh
dGE6OmluaXROb3JtYWxXb3JsZCgmdm0pOworICAgIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFs
V29ybGQoJnZtLCBXb3JrZXJUaHJlYWRUeXBlOjpNYWluKTsKIAogICAgIHJldHVybiB2bTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydEJ1ZmZl
clNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0QnVmZmVy
U291cmNlLmgKaW5kZXggODlhNzZiNDVkN2QzZDBkNTJlNTA0YmQ3NTAwZTk4OTE2ZGY0OGFiNS4u
YjZlNDA4MzgzM2QzN2Q0MjBiYjExMGU3MTlhZWFmM2E0MjA3M2M0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0QnVmZmVyU291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0QnVmZmVyU291cmNlLmgKQEAg
LTEwOSw3ICsxMDksOCBAQCBpbmxpbmUgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiB0b1Vu
c2hhcmVkQXJyYXlCdWZmZXJWaWV3KEpTQzo6Vk0mIHZtLCBKU0M6OgogCiBuYW1lc3BhY2UgRGV0
YWlsIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgQnVmZmVyU291cmNlVHlwZT4KK2VudW0gY2xhc3Mg
QnVmZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlIHsgQWxsb3csIERpc2FsbG93IH07
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCdWZmZXJTb3VyY2VUeXBlLCBCdWZmZXJTb3VyY2VDb252ZXJ0
ZXJBbGxvd1NoYXJlZE1vZGUgbW9kZT4KIHN0cnVjdCBCdWZmZXJTb3VyY2VDb252ZXJ0ZXIgewog
ICAgIHVzaW5nIFdyYXBwZXJUeXBlID0gdHlwZW5hbWUgQ29udmVydGVyPEJ1ZmZlclNvdXJjZVR5
cGU+OjpXcmFwcGVyVHlwZTsKICAgICB1c2luZyBSZXR1cm5UeXBlID0gdHlwZW5hbWUgQ29udmVy
dGVyPEJ1ZmZlclNvdXJjZVR5cGU+OjpSZXR1cm5UeXBlOwpAQCAtMTE5LDcgKzEyMCwxMSBAQCBz
dHJ1Y3QgQnVmZmVyU291cmNlQ29udmVydGVyIHsKICAgICB7CiAgICAgICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAgICAgUmV0dXJuVHlwZSBvYmplY3QgPSBXcmFw
cGVyVHlwZTo6dG9XcmFwcGVkKHZtLCB2YWx1ZSk7CisgICAgICAgIFJldHVyblR5cGUgb2JqZWN0
IHsgfTsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEJ1ZmZlclNvdXJjZUNvbnZlcnRl
ckFsbG93U2hhcmVkTW9kZTo6QWxsb3cpCisgICAgICAgICAgICBvYmplY3QgPSBXcmFwcGVyVHlw
ZTo6dG9XcmFwcGVkQWxsb3dTaGFyZWQodm0sIHZhbHVlKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgb2JqZWN0ID0gV3JhcHBlclR5cGU6OnRvV3JhcHBlZCh2bSwgdmFsdWUpOwogICAgICAg
ICBpZiAoVU5MSUtFTFkoIW9iamVjdCkpCiAgICAgICAgICAgICBleGNlcHRpb25UaHJvd2VyKGxl
eGljYWxHbG9iYWxPYmplY3QsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG9iamVjdDsKQEAgLTEz
NSw3ICsxNDAsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURMQXJyYXlCdWZmZXI+
IDogRGVmYXVsdENvbnZlcnRlcjxJRExBcnJheUJ1ZmZlcj4gewogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEV4Y2VwdGlvblRocm93ZXIgPSBEZWZhdWx0RXhjZXB0aW9uVGhyb3dlcj4KICAgICBzdGF0
aWMgUmV0dXJuVHlwZSBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRo
cm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkpCiAgICAgewotICAgICAgICByZXR1cm4gRGV0YWls
OjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMQXJyYXlCdWZmZXI+Ojpjb252ZXJ0KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0
aW9uVGhyb3dlcikpOworICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0
ZXI8SURMQXJyYXlCdWZmZXIsIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFy
ZWRNb2RlOjpEaXNhbGxvdz46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0
ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7CiAgICAgfQog
fTsKIApAQCAtMTU3LDcgKzE2Miw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExE
YXRhVmlldz4gOiBEZWZhdWx0Q29udmVydGVyPElETERhdGFWaWV3PiB7CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgogICAg
IHN0YXRpYyBSZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0
aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBE
ZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExEYXRhVmlldz46OmNvbnZlcnQobGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihleGNl
cHRpb25UaHJvd2VyKSk7CisgICAgICAgIHJldHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZl
cnRlcjxJRExEYXRhVmlldywgRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXJBbGxvd1NoYXJl
ZE1vZGU6OkRpc2FsbG93Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3Rk
Ojpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKICAgICB9CiB9
OwogCkBAIC0xNzksNyArMTg0LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETElu
dDhBcnJheT4gOiBEZWZhdWx0Q29udmVydGVyPElETEludDhBcnJheT4gewogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEV4Y2VwdGlvblRocm93ZXIgPSBEZWZhdWx0RXhjZXB0aW9uVGhyb3dlcj4KICAg
ICBzdGF0aWMgUmV0dXJuVHlwZSBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9uVGhyb3dlciYmIGV4Y2Vw
dGlvblRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkpCiAgICAgewotICAgICAgICByZXR1cm4g
RGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMSW50OEFycmF5Pjo6Y29udmVydChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4
Y2VwdGlvblRocm93ZXIpKTsKKyAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29u
dmVydGVyPElETEludDhBcnJheSwgRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXJBbGxvd1No
YXJlZE1vZGU6OkRpc2FsbG93Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwg
c3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKICAgICB9
CiB9OwogCkBAIC0yMDEsNyArMjA2LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElE
TEludDE2QXJyYXk+IDogRGVmYXVsdENvbnZlcnRlcjxJRExJbnQxNkFycmF5PiB7CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2Vy
PgogICAgIHN0YXRpYyBSZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYg
ZXhjZXB0aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExJbnQxNkFycmF5Pjo6Y29udmVy
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93
ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKKyAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291
cmNlQ29udmVydGVyPElETEludDE2QXJyYXksIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVy
QWxsb3dTaGFyZWRNb2RlOjpEaXNhbGxvdz46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7
CiAgICAgfQogfTsKIApAQCAtMjIzLDcgKzIyOCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZl
cnRlcjxJRExJbnQzMkFycmF5PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMSW50MzJBcnJheT4gewog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlvblRocm93ZXIgPSBEZWZhdWx0RXhjZXB0aW9u
VGhyb3dlcj4KICAgICBzdGF0aWMgUmV0dXJuVHlwZSBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9uVGhy
b3dlciYmIGV4Y2VwdGlvblRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkpCiAgICAgewotICAg
ICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMSW50MzJBcnJheT46
OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRp
b25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7CisgICAgICAgIHJldHVybiBEZXRhaWw6OkJ1
ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExJbnQzMkFycmF5LCBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNv
bnZlcnRlckFsbG93U2hhcmVkTW9kZTo6RGlzYWxsb3c+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhy
b3dlcikpOwogICAgIH0KIH07CiAKQEAgLTI0NSw3ICsyNTAsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBDb252ZXJ0ZXI8SURMVWludDhBcnJheT4gOiBEZWZhdWx0Q29udmVydGVyPElETFVpbnQ4QXJy
YXk+IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJvd2VyID0gRGVmYXVsdEV4
Y2VwdGlvblRocm93ZXI+CiAgICAgc3RhdGljIFJldHVyblR5cGUgY29udmVydChKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIEV4Y2Vw
dGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigpKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPElETFVpbnQ4
QXJyYXk+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8
RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOworICAgICAgICByZXR1cm4gRGV0
YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMVWludDhBcnJheSwgRGV0YWlsOjpCdWZmZXJT
b3VyY2VDb252ZXJ0ZXJBbGxvd1NoYXJlZE1vZGU6OkRpc2FsbG93Pjo6Y29udmVydChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2Vw
dGlvblRocm93ZXIpKTsKICAgICB9CiB9OwogCkBAIC0yNzMsNyArMjc4LDcgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQ29udmVydGVyPElETFVpbnQxNkFycmF5PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURM
VWludDE2QXJyYXk+IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJvd2VyID0g
RGVmYXVsdEV4Y2VwdGlvblRocm93ZXI+CiAgICAgc3RhdGljIFJldHVyblR5cGUgY29udmVydChK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFs
dWUsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dl
cigpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVy
PElETFVpbnQxNkFycmF5Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3Rk
Ojpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKKyAgICAgICAg
cmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPElETFVpbnQxNkFycmF5LCBEZXRh
aWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlckFsbG93U2hhcmVkTW9kZTo6RGlzYWxsb3c+Ojpjb252
ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhy
b3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOwogICAgIH0KIH07CiAKQEAgLTI5NSw3ICszMDAsNyBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURMVWludDMyQXJyYXk+IDogRGVmYXVsdENv
bnZlcnRlcjxJRExVaW50MzJBcnJheT4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlv
blRocm93ZXIgPSBEZWZhdWx0RXhjZXB0aW9uVGhyb3dlcj4KICAgICBzdGF0aWMgUmV0dXJuVHlw
ZSBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIgPSBFeGNl
cHRpb25UaHJvd2VyKCkpCiAgICAgewotICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3Vy
Y2VDb252ZXJ0ZXI8SURMVWludDMyQXJyYXk+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikp
OworICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMVWludDMy
QXJyYXksIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlOjpEaXNh
bGxvdz46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxF
eGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7CiAgICAgfQogfTsKIApAQCAtMzE3
LDcgKzMyMiw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExVaW50OENsYW1wZWRB
cnJheT4gOiBEZWZhdWx0Q29udmVydGVyPElETFVpbnQ4Q2xhCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgogICAgIHN0YXRp
YyBSZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0aW9uVGhy
b3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBEZXRhaWw6
OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExVaW50OENsYW1wZWRBcnJheT46OmNvbnZlcnQobGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihl
eGNlcHRpb25UaHJvd2VyKSk7CisgICAgICAgIHJldHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNv
bnZlcnRlcjxJRExVaW50OENsYW1wZWRBcnJheSwgRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0
ZXJBbGxvd1NoYXJlZE1vZGU6OkRpc2FsbG93Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIp
KTsKICAgICB9CiB9OwogCkBAIC0zMzksNyArMzQ0LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29u
dmVydGVyPElETEZsb2F0MzJBcnJheT4gOiBEZWZhdWx0Q29udmVydGVyPElETEZsb2F0MzJBcnJh
eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJvd2VyID0gRGVmYXVsdEV4Y2Vw
dGlvblRocm93ZXI+CiAgICAgc3RhdGljIFJldHVyblR5cGUgY29udmVydChKU0M6OkpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIEV4Y2VwdGlv
blRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigpKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPElETEZsb2F0MzJB
cnJheT46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxF
eGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7CisgICAgICAgIHJldHVybiBEZXRh
aWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExGbG9hdDMyQXJyYXksIERldGFpbDo6QnVmZmVy
U291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlOjpEaXNhbGxvdz46OmNvbnZlcnQobGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihleGNl
cHRpb25UaHJvd2VyKSk7CiAgICAgfQogfTsKIApAQCAtMzYxLDcgKzM2Niw3IEBAIHRlbXBsYXRl
PD4gc3RydWN0IENvbnZlcnRlcjxJRExGbG9hdDY0QXJyYXk+IDogRGVmYXVsdENvbnZlcnRlcjxJ
RExGbG9hdDY0QXJyYXk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9
IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgogICAgIHN0YXRpYyBSZXR1cm5UeXBlIGNvbnZlcnQo
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZh
bHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93
ZXIoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRl
cjxJRExGbG9hdDY0QXJyYXk+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBz
dGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOworICAgICAg
ICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMRmxvYXQ2NEFycmF5LCBE
ZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlckFsbG93U2hhcmVkTW9kZTo6RGlzYWxsb3c+Ojpj
b252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9u
VGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOwogICAgIH0KIH07CiAKQEAgLTM4Myw3ICszODgs
NyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURMQXJyYXlCdWZmZXJWaWV3PiA6IERl
ZmF1bHRDb252ZXJ0ZXI8SURMQXJyYXlCdWZmZQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2Vw
dGlvblRocm93ZXIgPSBEZWZhdWx0RXhjZXB0aW9uVGhyb3dlcj4KICAgICBzdGF0aWMgUmV0dXJu
VHlwZSBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIgPSBF
eGNlcHRpb25UaHJvd2VyKCkpCiAgICAgewotICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJT
b3VyY2VDb252ZXJ0ZXI8SURMQXJyYXlCdWZmZXJWaWV3Pjo6Y29udmVydChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRo
cm93ZXIpKTsKKyAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPElE
TEFycmF5QnVmZmVyVmlldywgRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXJBbGxvd1NoYXJl
ZE1vZGU6OkRpc2FsbG93Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3Rk
Ojpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKICAgICB9CiB9
OwogCkBAIC0zOTgsNCArNDAzLDE3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEpTQ29udmVydGVyPElE
TEFycmF5QnVmZmVyVmlldz4gewogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citz
dHJ1Y3QgQ29udmVydGVyPElETEFsbG93U2hhcmVkQWRhcHRvcjxUPj4gOiBEZWZhdWx0Q29udmVy
dGVyPFQ+IHsKKyAgICB1c2luZyBDb252ZXJ0ZXJUeXBlID0gQ29udmVydGVyPFQ+OworICAgIHVz
aW5nIFdyYXBwZXJUeXBlID0gdHlwZW5hbWUgQ29udmVydGVyVHlwZTo6V3JhcHBlclR5cGU7Cisg
ICAgdXNpbmcgUmV0dXJuVHlwZSA9IHR5cGVuYW1lIENvbnZlcnRlclR5cGU6OlJldHVyblR5cGU7
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJvd2VyID0gRGVmYXVsdEV4Y2Vw
dGlvblRocm93ZXI+CisgICAgc3RhdGljIFJldHVyblR5cGUgY29udmVydChKU0M6OkpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIEV4Y2VwdGlv
blRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigpKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPFQsIERldGFpbDo6
QnVmZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlOjpBbGxvdz46OmNvbnZlcnQobGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihl
eGNlcHRpb25UaHJvd2VyKSk7CisgICAgfQorfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VW5pb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFVuaW9uLmgKaW5kZXgg
MWY4MjQzM2Y5MmM3MWExMWFiZTc3ODY5OTE0MzZiN2I4M2Q1NWI0Yi4uY2EyMDVkMjZiYTgzNGNm
MTQ4YjVhMzI0NGNhZDM3MjI1NTkwYmM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Db252ZXJ0VW5pb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRVbmlvbi5oCkBAIC0yMjUsNyArMjI1LDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gVD4gc3RydWN0IENvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4gOiBEZWZhdWx0Q29u
dmVydGVyPElETFUKICAgICAgICAgLy8gNy4gSWYgVHlwZShWKSBpcyBPYmplY3QgYW5kIFYgaGFz
IGFuIFtbQXJyYXlCdWZmZXJEYXRhXV0gaW50ZXJuYWwgc2xvdCwgdGhlbjoKICAgICAgICAgLy8g
ICAgIDEuIElmIHR5cGVzIGluY2x1ZGVzIEFycmF5QnVmZmVyLCB0aGVuIHJldHVybiB0aGUgcmVz
dWx0IG9mIGNvbnZlcnRpbmcgViB0byBBcnJheUJ1ZmZlci4KICAgICAgICAgLy8gICAgIDIuIElm
IHR5cGVzIGluY2x1ZGVzIG9iamVjdCwgdGhlbiByZXR1cm4gdGhlIElETCB2YWx1ZSB0aGF0IGlz
IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgVi4KLSAgICAgICAgY29uc3RleHByIGJvb2wgaGFz
QXJyYXlCdWZmZXJUeXBlID0gYnJpZ2FuZDo6YW55PFR5cGVMaXN0LCBzdGQ6OmlzX3NhbWU8SURM
QXJyYXlCdWZmZXIsIGJyaWdhbmQ6Ol8xPj46OnZhbHVlOworICAgICAgICBjb25zdGV4cHIgYm9v
bCBoYXNBcnJheUJ1ZmZlclR5cGUgPSBicmlnYW5kOjphbnk8VHlwZUxpc3QsIElzSURMQXJyYXlC
dWZmZXI8YnJpZ2FuZDo6XzE+Pjo6dmFsdWU7CiAgICAgICAgIGlmIChoYXNBcnJheUJ1ZmZlclR5
cGUgfHwgaGFzT2JqZWN0VHlwZSkgewogICAgICAgICAgICAgYXV0byBhcnJheUJ1ZmZlciA9IEpT
Qzo6SlNBcnJheUJ1ZmZlcjo6dG9XcmFwcGVkKHZtLCB2YWx1ZSk7CiAgICAgICAgICAgICBpZiAo
YXJyYXlCdWZmZXIpIHsKQEAgLTIzNSw3ICsyMzUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBU
PiBzdHJ1Y3QgQ29udmVydGVyPElETFVuaW9uPFQuLi4+PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURM
VQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgY29uc3RleHByIGJvb2wgaGFz
QXJyYXlCdWZmZXJWaWV3VHlwZSA9IGJyaWdhbmQ6OmFueTxUeXBlTGlzdCwgc3RkOjppc19zYW1l
PElETEFycmF5QnVmZmVyVmlldywgYnJpZ2FuZDo6XzE+Pjo6dmFsdWU7CisgICAgICAgIGNvbnN0
ZXhwciBib29sIGhhc0FycmF5QnVmZmVyVmlld1R5cGUgPSBicmlnYW5kOjphbnk8VHlwZUxpc3Qs
IElzSURMQXJyYXlCdWZmZXJWaWV3PGJyaWdhbmQ6Ol8xPj46OnZhbHVlOwogICAgICAgICBpZiAo
aGFzQXJyYXlCdWZmZXJWaWV3VHlwZSB8fCBoYXNPYmplY3RUeXBlKSB7CiAgICAgICAgICAgICBh
dXRvIGFycmF5QnVmZmVyVmlldyA9IEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnRvV3JhcHBlZCh2
bSwgdmFsdWUpOwogICAgICAgICAgICAgaWYgKGFycmF5QnVmZmVyVmlldykgewpAQCAtNDA1LDQg
KzQwNSwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPiBzdHJ1Y3QgSlNDb252ZXJ0ZXI8SURM
VW5pb248VC4uLj4+IHsKICAgICB9CiB9OwogCisvLyBCdWZmZXJTb3VyY2Ugc3BlY2lhbGl6YXRp
b24uIEluIFdlYktpdCwgQnVmZmVyU291cmNlIGlzIGRlZmluZWQgYXMgSURMVW5pb248SURMQXJy
YXlCdWZmZXJWaWV3LCBJRExBcnJheUJ1ZmZlcj4gYXMgYSBoYWNrLCBhbmQgaXQgaXMgbm90IGNv
bXBhdGlibGUgdG8KKy8vIGFubm90YXRpb24gZGVzY3JpYmVkIGluIFdlYklETC4KK3RlbXBsYXRl
PD4gc3RydWN0IENvbnZlcnRlcjxJRExBbGxvd1NoYXJlZEFkYXB0b3I8SURMVW5pb248SURMQXJy
YXlCdWZmZXJWaWV3LCBJRExBcnJheUJ1ZmZlcj4+PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMVW5p
b248SURMQXJyYXlCdWZmZXJWaWV3LCBJRExBcnJheUJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgYXV0
byBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSB2YWx1ZSkgLT4gZGVjbHR5cGUoYXV0bykKKyAgICB7CisgICAgICAgIHJldHVybiBD
b252ZXJ0ZXI8SURMVW5pb248SURMQWxsb3dTaGFyZWRBZGFwdG9yPElETEFycmF5QnVmZmVyVmll
dz4sIElETEFsbG93U2hhcmVkQWRhcHRvcjxJRExBcnJheUJ1ZmZlcj4+Pjo6Y29udmVydChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgfQorfTsKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKaW5kZXggMmQ5OWJlNjQxM2MzMGMxNDA4ZjUzNmJjMThhMjFlYzg0MWE5Nzc2
My4uZDhjY2Y0Y2M2YjJmZWVmYzJmNGQwNzM0ZGZiMWJkNTQ0ZjE3OWVjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBA
IC03NSw2ICs3NSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTZXQuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU1NldEl0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNUeXBlZEFycmF5cy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTV2ViQXNz
ZW1ibHlNZW1vcnkuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1dlYkFzc2VtYmx5TW9k
dWxlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgpAQCAtMTgyLDYgKzE4
Myw5IEBAIGVudW0gU2VyaWFsaXphdGlvblRhZyB7CiAjZW5kaWYKICAgICBCaWdJbnRUYWcgPSA0
NywKICAgICBCaWdJbnRPYmplY3RUYWcgPSA0OCwKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisg
ICAgV2FzbU1lbW9yeVRhZyA9IDQ5LAorI2VuZGlmCiAgICAgRXJyb3JUYWcgPSAyNTUKIH07CiAK
QEAgLTM1Nyw3ICszNjEsNiBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RyaW5nRGF0YUlzOEJp
dEZsYWcgPSAweDgwMDAwMDAwOwogICogICAgfCBNZXNzYWdlUG9ydFJlZmVyZW5jZVRhZyA8dmFs
dWU6dWludDMyX3Q+CiAgKiAgICB8IEFycmF5QnVmZmVyCiAgKiAgICB8IEFycmF5QnVmZmVyVmll
d1RhZyBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgPGJ5dGVPZmZzZXQ6dWludDMyX3Q+IDxieXRlTGVu
Z3RoOnVpbnQzMl90PiAoQXJyYXlCdWZmZXIgfCBPYmplY3RSZWZlcmVuY2UpCi0gKiAgICB8IEFy
cmF5QnVmZmVyVHJhbnNmZXJUYWcgPHZhbHVlOnVpbnQzMl90PgogICogICAgfCBDcnlwdG9LZXlU
YWcgPHdyYXBwZWRLZXlMZW5ndGg6dWludDMyX3Q+IDxmYWN0b3I6Ynl0ZXt3cmFwcGVkS2V5TGVu
Z3RofT4KICAqICAgIHwgRE9NUG9pbnQKICAqICAgIHwgRE9NUmVjdApAQCAtMzY3LDYgKzM3MCw3
IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJpbmdEYXRhSXM4Qml0RmxhZyA9IDB4ODAwMDAw
MDA7CiAgKiAgICB8IFJUQ0NlcnRpZmljYXRlVGFnCiAgKiAgICB8IEltYWdlQml0bWFwVGFnIDxv
cmlnaW5DbGVhbjp1aW50OF90PiA8bG9naWNhbFdpZHRoOmludDMyX3Q+IDxsb2dpY2FsSGVpZ2h0
OmludDMyX3Q+IDxyZXNvbHV0aW9uU2NhbGU6ZG91YmxlPiA8Ynl0ZUxlbmd0aDp1aW50MzJfdD4o
PGltYWdlQnl0ZURhdGE6dWludDhfdD4pCiAgKiAgICB8IE9mZnNjcmVlbkNhbnZhc1RyYW5zZmVy
VGFnIDx2YWx1ZTp1aW50MzJfdD4KKyAqICAgIHwgV2FzbU1lbW9yeVRhZyA8dmFsdWU6dWludDMy
X3Q+CiAgKgogICogSW5zaWRlIGNlcnRpZmljYXRlLCBkYXRhIGlzIHNlcmlhbGl6ZWQgaW4gdGhp
cyBmb3JtYXQgYXMgcGVyIHNwZWM6CiAgKgpAQCAtNDE5LDYgKzQyMyw4IEBAIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJpbmdEYXRhSXM4Qml0RmxhZyA9IDB4ODAwMDAwMDA7CiAgKgogICogQXJy
YXlCdWZmZXIgOi0KICAqICAgIEFycmF5QnVmZmVyVGFnIDxsZW5ndGg6dWludDMyX3Q+IDxjb250
ZW50czpieXRle2xlbmd0aH0+CisgKiAgICBBcnJheUJ1ZmZlclRyYW5zZmVyVGFnIDx2YWx1ZTp1
aW50MzJfdD4KKyAqICAgIFNoYXJlZEFycmF5QnVmZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KICAq
CiAgKiBDcnlwdG9LZXlITUFDIDotCiAgKiAgICA8a2V5U2l6ZTp1aW50MzJfdD4gPGtleURhdGE6
Ynl0ZXtrZXlTaXplfT4gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZyAvLyBBbGdvcml0aG0g
dGFnIGlubmVyIGhhc2ggZnVuY3Rpb24uCkBAIC01NzYsNiArNTgyLDcgQEAgY2xhc3MgQ2xvbmVT
ZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICAgICAgICAgICAgIFdhc21Nb2R1bGVBcnJheSYgd2FzbU1vZHVsZXMsCisgICAgICAgICAgICBX
YXNtTWVtb3J5SGFuZGxlQXJyYXkmIHdhc21NZW1vcnlIYW5kbGVzLAogI2VuZGlmCiAgICAgICAg
IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgVmVjdG9yPHVpbnQ4X3Q+JiBvdXQsIFNlcmlhbGl6
YXRpb25Db250ZXh0IGNvbnRleHQsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSYgc2hhcmVkQnVm
ZmVycykKICAgICB7CkBAIC01ODUsNiArNTkyLDcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDog
Q2xvbmVCYXNlIHsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgICAg
IHdhc21Nb2R1bGVzLAorICAgICAgICAgICAgd2FzbU1lbW9yeUhhbmRsZXMsCiAjZW5kaWYKICAg
ICAgICAgICAgIGJsb2JVUkxzLCBvdXQsIGNvbnRleHQsIHNoYXJlZEJ1ZmZlcnMpOwogICAgICAg
ICByZXR1cm4gc2VyaWFsaXplci5zZXJpYWxpemUodmFsdWUpOwpAQCAtNjE1LDYgKzYyMyw3IEBA
IGNsYXNzIENsb25lU2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAjZW5kaWYKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAgICAgICAgICAgICBXYXNtTW9kdWxlQXJyYXkmIHdhc21Nb2R1bGVzLAor
ICAgICAgICAgICAgV2FzbU1lbW9yeUhhbmRsZUFycmF5JiB3YXNtTWVtb3J5SGFuZGxlcywKICNl
bmRpZgogICAgICAgICBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIFZlY3Rvcjx1aW50OF90PiYg
b3V0LCBTZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0LCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXkmIHNoYXJlZEJ1ZmZlcnMpCiAgICAgICAgIDogQ2xvbmVCYXNlKGxleGljYWxHbG9iYWxPYmpl
Y3QpCkBAIC02MjUsNiArNjM0LDcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNl
IHsKICAgICAgICAgLCBtX3NoYXJlZEJ1ZmZlcnMoc2hhcmVkQnVmZmVycykKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAgICAgICAgICwgbV93YXNtTW9kdWxlcyh3YXNtTW9kdWxlcykKKyAgICAg
ICAgLCBtX3dhc21NZW1vcnlIYW5kbGVzKHdhc21NZW1vcnlIYW5kbGVzKQogI2VuZGlmCiAgICAg
ewogICAgICAgICB3cml0ZShDdXJyZW50VmVyc2lvbik7CkBAIC0xMjMwLDYgKzEyNDAsNyBAQCBj
bGFzcyBDbG9uZVNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAgICAgICAgICAgICAgIFZlY3Rv
cjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IGR1bW15QXJyYXlCdWZmZXJzOwogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKICAgICAgICAgICAgICAgICBXYXNtTW9kdWxlQXJyYXkgZHVtbXlNb2R1
bGVzOworICAgICAgICAgICAgICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSBkdW1teU1lbW9yeUhh
bmRsZXM7CiAjZW5kaWYKICAgICAgICAgICAgICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkg
ZHVtbXlTaGFyZWRCdWZmZXJzOwogICAgICAgICAgICAgICAgIENsb25lU2VyaWFsaXplciByYXdL
ZXlTZXJpYWxpemVyKG1fbGV4aWNhbEdsb2JhbE9iamVjdCwgZHVtbXlNZXNzYWdlUG9ydHMsIGR1
bW15QXJyYXlCdWZmZXJzLCB7IH0sCkBAIC0xMjM4LDYgKzEyNDksNyBAQCBjbGFzcyBDbG9uZVNl
cmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
ICAgICAgICAgICAgICAgICAgICBkdW1teU1vZHVsZXMsCisgICAgICAgICAgICAgICAgICAgIGR1
bW15TWVtb3J5SGFuZGxlcywKICNlbmRpZgogICAgICAgICAgICAgICAgICAgICBkdW1teUJsb2JV
UkxzLCBzZXJpYWxpemVkS2V5LCBTZXJpYWxpemF0aW9uQ29udGV4dDo6RGVmYXVsdCwgZHVtbXlT
aGFyZWRCdWZmZXJzKTsKICAgICAgICAgICAgICAgICByYXdLZXlTZXJpYWxpemVyLndyaXRlKGtl
eSk7CkBAIC0xMjc0LDYgKzEyODYsMTcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVC
YXNlIHsKICAgICAgICAgICAgICAgICB3cml0ZShpbmRleCk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoSlNXZWJBc3NlbWJseU1l
bW9yeSogbWVtb3J5ID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TWVtb3J5Kj4odm0sIG9i
aikpIHsKKyAgICAgICAgICAgICAgICBpZiAobWVtb3J5LT5tZW1vcnkoKS5zaGFyaW5nTW9kZSgp
ICE9IEpTQzo6V2FzbTo6TWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZCkgeworICAgICAgICAgICAg
ICAgICAgICBjb2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkRhdGFDbG9uZUVycm9yOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgdWludDMyX3QgaW5kZXggPSBtX3dhc21NZW1vcnlIYW5kbGVzLnNpemUoKTsK
KyAgICAgICAgICAgICAgICBtX3dhc21NZW1vcnlIYW5kbGVzLmFwcGVuZChtYWtlUmVmKG1lbW9y
eS0+bWVtb3J5KCkuaGFuZGxlKCkpKTsKKyAgICAgICAgICAgICAgICB3cml0ZShXYXNtTWVtb3J5
VGFnKTsKKyAgICAgICAgICAgICAgICB3cml0ZShpbmRleCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgICAgIGlmIChvYmotPmlu
aGVyaXRzPEpTRE9NUG9pbnRSZWFkT25seT4odm0pKSB7CiAgICAgICAgICAgICAgICAgZHVtcERP
TVBvaW50KG9iaik7CkBAIC0xNjU4LDYgKzE2ODEsNyBAQCBjbGFzcyBDbG9uZVNlcmlhbGl6ZXIg
OiBDbG9uZUJhc2UgewogICAgIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSYgbV9zaGFyZWRCdWZm
ZXJzOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBXYXNtTW9kdWxlQXJyYXkmIG1fd2Fz
bU1vZHVsZXM7CisgICAgV2FzbU1lbW9yeUhhbmRsZUFycmF5JiBtX3dhc21NZW1vcnlIYW5kbGVz
OwogI2VuZGlmCiB9OwogCkBAIC0xOTM3LDYgKzE5NjEsNyBAQCBjbGFzcyBDbG9uZURlc2VyaWFs
aXplciA6IENsb25lQmFzZSB7CiAgICAgICAgICwgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5KiBh
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGJsb2JG
aWxlUGF0aHMsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogc2hhcmVkQnVmZmVycwogI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBXYXNtTW9kdWxlQXJyYXkqIHdhc21Nb2R1bGVz
CisgICAgICAgICwgV2FzbU1lbW9yeUhhbmRsZUFycmF5KiB3YXNtTWVtb3J5SGFuZGxlcwogI2Vu
ZGlmCiAgICAgICAgICkKICAgICB7CkBAIC0xOTQ4LDYgKzE5NzMsNyBAQCBjbGFzcyBDbG9uZURl
c2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
CiAgICAgICAgICAgICAsIHdhc21Nb2R1bGVzCisgICAgICAgICAgICAsIHdhc21NZW1vcnlIYW5k
bGVzCiAjZW5kaWYKICAgICAgICAgICAgICk7CiAgICAgICAgIGlmICghZGVzZXJpYWxpemVyLmlz
VmFsaWQoKSkKQEAgLTIwMDEsNiArMjAyNyw3IEBAIGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDog
Q2xvbmVCYXNlIHsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBX
YXNtTW9kdWxlQXJyYXkqIHdhc21Nb2R1bGVzID0gbnVsbHB0cgorICAgICAgICAsIFdhc21NZW1v
cnlIYW5kbGVBcnJheSogd2FzbU1lbW9yeUhhbmRsZXMgPSBudWxscHRyCiAjZW5kaWYKICAgICAg
ICAgKQogICAgICAgICA6IENsb25lQmFzZShsZXhpY2FsR2xvYmFsT2JqZWN0KQpAQCAtMjAyMSw2
ICsyMDQ4LDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogI2VuZGlm
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAsIG1fd2FzbU1vZHVsZXMod2FzbU1v
ZHVsZXMpCisgICAgICAgICwgbV93YXNtTWVtb3J5SGFuZGxlcyh3YXNtTWVtb3J5SGFuZGxlcykK
ICNlbmRpZgogICAgIHsKICAgICAgICAgaWYgKCFyZWFkKG1fdmVyc2lvbikpCkBAIC0yMDMzLDYg
KzIwNjEsNyBAQCBjbGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgV2FzbU1vZHVsZUFycmF5KiB3YXNt
TW9kdWxlcworICAgICAgICAsIFdhc21NZW1vcnlIYW5kbGVBcnJheSogd2FzbU1lbW9yeUhhbmRs
ZXMKICNlbmRpZgogICAgICAgICApCiAgICAgICAgIDogQ2xvbmVCYXNlKGxleGljYWxHbG9iYWxP
YmplY3QpCkBAIC0yMDU2LDYgKzIwODUsNyBAQCBjbGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENs
b25lQmFzZSB7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgbV93
YXNtTW9kdWxlcyh3YXNtTW9kdWxlcykKKyAgICAgICAgLCBtX3dhc21NZW1vcnlIYW5kbGVzKHdh
c21NZW1vcnlIYW5kbGVzKQogI2VuZGlmCiAgICAgewogICAgICAgICBpZiAoIXJlYWQobV92ZXJz
aW9uKSkKQEAgLTMyOTksNiArMzMyOSwzMyBAQCBjbGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENs
b25lQmFzZSB7CiAgICAgICAgICAgICBtX2djQnVmZmVyLmFwcGVuZFdpdGhDcmFzaE9uT3ZlcmZs
b3cocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBXYXNtTWVtb3J5VGFnOiB7CisgICAgICAgICAgICB1aW50MzJfdCBpbmRleDsKKyAg
ICAgICAgICAgIGJvb2wgaW5kZXhTdWNjZXNzZnVsbHlSZWFkID0gcmVhZChpbmRleCk7CisgICAg
ICAgICAgICBpZiAoIWluZGV4U3VjY2Vzc2Z1bGx5UmVhZCB8fCAhbV93YXNtTWVtb3J5SGFuZGxl
cyB8fCBpbmRleCA+PSBtX3dhc21NZW1vcnlIYW5kbGVzLT5zaXplKCkpIHsKKyAgICAgICAgICAg
ICAgICBmYWlsKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIFJlZlB0cjxXYXNtOjpNZW1vcnlIYW5kbGU+IGhhbmRsZSA9IG1f
d2FzbU1lbW9yeUhhbmRsZXMtPmF0KGluZGV4KTsKKyAgICAgICAgICAgIGlmICghaGFuZGxlKSB7
CisgICAgICAgICAgICAgICAgZmFpbCgpOworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhdXRvJiB2bSA9IG1fbGV4aWNhbEdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkqIHJlc3VsdCA9IEpTQzo6
SlNXZWJBc3NlbWJseU1lbW9yeTo6dHJ5Q3JlYXRlKG1fbGV4aWNhbEdsb2JhbE9iamVjdCwgdm0s
IG1fZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseU1lbW9yeVN0cnVjdHVyZSgpKTsKKyAgICAgICAg
ICAgIC8vIFNpbmNlIHdlIGFyZSBjbG9uaW5nIGEgSlNXZWJBc3NlbWJseU1lbW9yeSwgaXQncyBp
bXBvc3NpYmxlIGZvciB0aGF0CisgICAgICAgICAgICAvLyBtb2R1bGUgdG8gbm90IGhhdmUgYmVl
biBhIHZhbGlkIG1vZHVsZS4gVGhlcmVmb3JlLCBjcmVhdGVTdHViIHNob3VsZAorICAgICAgICAg
ICAgLy8gbm90IHRyb3cuCisgICAgICAgICAgICBzY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRp
b24oKTsKKyAgICAgICAgICAgIFJlZjxXYXNtOjpNZW1vcnk+IG1lbW9yeSA9IFdhc206Ok1lbW9y
eTo6Y3JlYXRlKGhhbmRsZS5yZWxlYXNlTm9uTnVsbCgpLAorICAgICAgICAgICAgICAgIFsmdm1d
IChXYXNtOjpNZW1vcnk6Ok5vdGlmeVByZXNzdXJlKSB7IHZtLmhlYXAuY29sbGVjdEFzeW5jKENv
bGxlY3Rpb25TY29wZTo6RnVsbCk7IH0sCisgICAgICAgICAgICAgICAgWyZ2bV0gKFdhc206Ok1l
bW9yeTo6U3luY1RyeVRvUmVjbGFpbSkgeyB2bS5oZWFwLmNvbGxlY3RTeW5jKENvbGxlY3Rpb25T
Y29wZTo6RnVsbCk7IH0sCisgICAgICAgICAgICAgICAgWyZ2bSwgcmVzdWx0XSAoV2FzbTo6TWVt
b3J5OjpHcm93U3VjY2VzcywgV2FzbTo6UGFnZUNvdW50IG9sZFBhZ2VDb3VudCwgV2FzbTo6UGFn
ZUNvdW50IG5ld1BhZ2VDb3VudCkgeyByZXN1bHQtPmdyb3dTdWNjZXNzQ2FsbGJhY2sodm0sIG9s
ZFBhZ2VDb3VudCwgbmV3UGFnZUNvdW50KTsgfSk7CisgICAgICAgICAgICByZXN1bHQtPmFkb3B0
KFdURk1vdmUobWVtb3J5KSk7CisgICAgICAgICAgICBtX2djQnVmZmVyLmFwcGVuZFdpdGhDcmFz
aE9uT3ZlcmZsb3cocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
IH0KICNlbmRpZgogICAgICAgICBjYXNlIEFycmF5QnVmZmVyVGFnOiB7CiAgICAgICAgICAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyOwpAQCAtMzQzOSw2ICszNDk2LDcgQEAgY2xh
c3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogI2VuZGlmCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgIFdhc21Nb2R1bGVBcnJheSogbV93YXNtTW9kdWxlczsKKyAgICBXYXNt
TWVtb3J5SGFuZGxlQXJyYXkqIG1fd2FzbU1lbW9yeUhhbmRsZXM7CiAjZW5kaWYKIAogICAgIFN0
cmluZyBibG9iRmlsZVBhdGhGb3JCbG9iVVJMKGNvbnN0IFN0cmluZyYgYmxvYlVSTCkKQEAgLTM2
NjEsNiArMzcxOSw3IEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgY29uc3QgVmVjCiAjZW5kaWYKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgc3RkOjp1bmlxdWVfcHRyPFdhc21Nb2R1bGVBcnJh
eT4gd2FzbU1vZHVsZXNBcnJheQorICAgICAgICAsIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTWVtb3J5
SGFuZGxlQXJyYXk+IHdhc21NZW1vcnlIYW5kbGVzQXJyYXkKICNlbmRpZgogICAgICAgICApCiAg
ICAgOiBtX2RhdGEoV1RGTW92ZShidWZmZXIpKQpAQCAtMzY3Miw2ICszNzMxLDcgQEAgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYg
YnVmZmVyLCBjb25zdCBWZWMKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAs
IG1fd2FzbU1vZHVsZXNBcnJheShXVEZNb3ZlKHdhc21Nb2R1bGVzQXJyYXkpKQorICAgICwgbV93
YXNtTWVtb3J5SGFuZGxlc0FycmF5KFdURk1vdmUod2FzbU1lbW9yeUhhbmRsZXNBcnJheSkpCiAj
ZW5kaWYKIHsKICAgICAvLyBTaW5jZSB0aGlzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBpcyBtZWFu
dCB0byBiZSBwYXNzZWQgYmV0d2VlbiB0aHJlYWRzLCBpdHMgU3RyaW5nIGRhdGEgbWVtYmVycwpA
QCAtMzcxMCw2ICszNzcwLDEwIEBAIHNpemVfdCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNvbXB1
dGVNZW1vcnlDb3N0KCkgY29uc3QKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAvLyBX
ZSBhcmUgbm90IHN1cHBvcnRpbmcgV2ViQXNzZW1ibHkgTW9kdWxlIG1lbW9yeSBlc3RpbWF0aW9u
IHlldC4KKyAgICBpZiAobV93YXNtTWVtb3J5SGFuZGxlc0FycmF5KSB7CisgICAgICAgIGZvciAo
YXV0byYgY29udGVudCA6ICptX3dhc21NZW1vcnlIYW5kbGVzQXJyYXkpCisgICAgICAgICAgICBj
b3N0ICs9IGNvbnRlbnQtPnNpemUoKTsKKyAgICB9CiAjZW5kaWYKIAogICAgIGZvciAoYXV0byYg
dXJscyA6IG1fYmxvYlVSTHMpCkBAIC0zODAwLDYgKzM4NjQsNyBAQCBSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iamVj
dCYgbGV4aQogICAgIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IGR1bW15QXJyYXlC
dWZmZXJzOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBXYXNtTW9kdWxlQXJyYXkgZHVt
bXlNb2R1bGVzOworICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSBkdW1teU1lbW9yeUhhbmRsZXM7
CiAjZW5kaWYKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgZHVtbXlTaGFyZWRCdWZmZXJz
OwogICAgIGF1dG8gY29kZSA9IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSwgZHVtbXlNZXNzYWdlUG9ydHMsIGR1bW15QXJyYXlCdWZmZXJzLCBk
dW1teUltYWdlQml0bWFwcywKQEAgLTM4MDgsMTEgKzM4NzMsMTMgQEAgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYmpl
Y3QmIGxleGkKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgZHVtbXlN
b2R1bGVzLAorICAgICAgICBkdW1teU1lbW9yeUhhbmRsZXMsCiAjZW5kaWYKICAgICAgICAgYmxv
YlVSTHMsIGJ1ZmZlciwgU2VyaWFsaXphdGlvbkNvbnRleHQ6OkRlZmF1bHQsIGR1bW15U2hhcmVk
QnVmZmVycyk7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShkdW1teU1vZHVsZXMuaXNFbXB0eSgpLCAiV2FzbTo6TW9kdWxlIHNlcmlhbGl6YXRpb24g
aXMgb25seSBhbGxvd2VkIGluIHRoZSBwb3N0TWVzc2FnZSBjb250ZXh0Iik7CisgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRShkdW1teU1lbW9yeUhhbmRsZXMuaXNFbXB0eSgpLCAiV2FzbTo6TWVtb3J5
IHNlcmlhbGl6YXRpb24gaXMgb25seSBhbGxvd2VkIGluIHRoZSBwb3N0TWVzc2FnZSBjb250ZXh0
Iik7CiAjZW5kaWYKIAogICAgIGlmICh0aHJvd0V4Y2VwdGlvbnMgPT0gU2VyaWFsaXphdGlvbkVy
cm9yTW9kZTo6VGhyb3dpbmcpCkBAIC0zODU5LDcgKzM5MjYsNyBAQCBFeGNlcHRpb25PcjxSZWY8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNH
bG9iYWxPYgogI2VuZGlmCiAgICAgZm9yIChhdXRvJiB0cmFuc2ZlcmFibGUgOiB0cmFuc2Zlckxp
c3QpIHsKICAgICAgICAgaWYgKGF1dG8gYXJyYXlCdWZmZXIgPSB0b1Bvc3NpYmx5U2hhcmVkQXJy
YXlCdWZmZXIodm0sIHRyYW5zZmVyYWJsZS5nZXQoKSkpIHsKLSAgICAgICAgICAgIGlmIChhcnJh
eUJ1ZmZlci0+aXNEZXRhY2hlZCgpKQorICAgICAgICAgICAgaWYgKGFycmF5QnVmZmVyLT5pc0Rl
dGFjaGVkKCkgfHwgYXJyYXlCdWZmZXItPmlzU2hhcmVkKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IERhdGFDbG9uZUVycm9yIH07CiAgICAgICAgICAgICBpZiAoYXJyYXlC
dWZmZXItPmlzTG9ja2VkKCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CkBAIC0zOTA0LDYgKzM5NzEsNyBAQCBFeGNlcHRpb25PcjxSZWY8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNH
bG9iYWxPYgogICAgIFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxzOwogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKICAgICBXYXNtTW9kdWxlQXJyYXkgd2FzbU1vZHVsZXM7CisgICAgV2FzbU1lbW9yeUhh
bmRsZUFycmF5IHdhc21NZW1vcnlIYW5kbGVzOwogI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRy
PEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycyA9IG1ha2VVbmlxdWU8QXJy
YXlCdWZmZXJDb250ZW50c0FycmF5PigpOwogICAgIGF1dG8gY29kZSA9IENsb25lU2VyaWFsaXpl
cjo6c2VyaWFsaXplKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgbWVzc2FnZVBvcnRzLCBh
cnJheUJ1ZmZlcnMsIGltYWdlQml0bWFwcywKQEAgLTM5MTEsNyArMzk3OSw4IEBAIEV4Y2VwdGlv
bk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZShKU0dsb2JhbE9iCiAgICAgICAgIG9mZnNjcmVlbkNhbnZhc2VzLAogI2VuZGlmCiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICAgICB3YXNtTW9kdWxlcywgCisgICAgICAgIHdhc21N
b2R1bGVzLAorICAgICAgICB3YXNtTWVtb3J5SGFuZGxlcywKICNlbmRpZgogICAgICAgICBibG9i
VVJMcywgYnVmZmVyLCBjb250ZXh0LCAqc2hhcmVkQnVmZmVycyk7CiAKQEAgLTM5MzYsNiArNDAw
NSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iCiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAgICAgICAgICAgICAgICAgLCBtYWtlVW5pcXVlPFdhc21Nb2R1bGVBcnJheT4od2Fz
bU1vZHVsZXMpCisgICAgICAgICAgICAgICAgLCBtYWtlVW5pcXVlPFdhc21NZW1vcnlIYW5kbGVB
cnJheT4od2FzbU1lbW9yeUhhbmRsZXMpCiAjZW5kaWYKICAgICAgICAgICAgICAgICApKTsKIH0K
QEAgLTM5OTMsNiArNDA2Myw3IEBAIEpTVmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNl
cmlhbGl6ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICAgICAgLCBt
X2FycmF5QnVmZmVyQ29udGVudHNBcnJheS5nZXQoKSwgbV9kYXRhLCBibG9iVVJMcywgYmxvYkZp
bGVQYXRocywgbV9zaGFyZWRCdWZmZXJDb250ZW50c0FycmF5LmdldCgpCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgICAgICAsIG1fd2FzbU1vZHVsZXNBcnJheS5nZXQoKQorICAgICAgICAs
IG1fd2FzbU1lbW9yeUhhbmRsZXNBcnJheS5nZXQoKQogI2VuZGlmCiAgICAgICAgICk7CiAgICAg
aWYgKHRocm93RXhjZXB0aW9ucyA9PSBTZXJpYWxpemF0aW9uRXJyb3JNb2RlOjpUaHJvd2luZykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgKaW5kZXggZDJhMGM0YTBiODNkYWU4OTJkYjc5NTA2ZWQzMTZkZWIzOGExNjUwZC4uMGNkYjQw
MThjODQ3ZmEwMGZlZDdmNWZiMGZjYmNhMzUzOTgzNTI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTQxLDYgKzQxLDcg
QEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNWYWx1ZSogSlNWYWx1ZVJlZjsKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogY2xh
c3MgTW9kdWxlOworY2xhc3MgTWVtb3J5SGFuZGxlOwogfSB9CiAjZW5kaWYKIApAQCAtNjEsNiAr
NjIsNyBAQCBlbnVtIGNsYXNzIFNlcmlhbGl6YXRpb25Db250ZXh0IHsgRGVmYXVsdCwgV29ya2Vy
UG9zdE1lc3NhZ2UsIFdpbmRvd1Bvc3RNZXNzYWdlCiB1c2luZyBBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXkgPSBWZWN0b3I8SlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzPjsKICNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCiB1c2luZyBXYXNtTW9kdWxlQXJyYXkgPSBWZWN0b3I8UmVmUHRyPEpTQzo6V2Fz
bTo6TW9kdWxlPj47Cit1c2luZyBXYXNtTWVtb3J5SGFuZGxlQXJyYXkgPSBWZWN0b3I8UmVmUHRy
PEpTQzo6V2FzbTo6TWVtb3J5SGFuZGxlPj47CiAjZW5kaWYKIAogREVDTEFSRV9BTExPQ0FUT1Jf
V0lUSF9IRUFQX0lERU5USUZJRVIoU2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKQEAgLTEyMiw2ICsx
MjQsNyBAQCBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8U2VyaWFsaXplZFNjcmlwdFZhbHVlPgogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQogICAgICAgICAsIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTW9kdWxlQXJyYXk+ID0gbnVs
bHB0cgorICAgICAgICAsIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTWVtb3J5SGFuZGxlQXJyYXk+ID0g
bnVsbHB0cgogI2VuZGlmCiAgICAgICAgICk7CiAKQEAgLTEzNiw2ICsxMzksNyBAQCBjbGFzcyBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPgogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXYXNtTW9kdWxlQXJyYXk+IG1fd2FzbU1vZHVsZXNBcnJheTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2FzbU1lbW9yeUhhbmRsZUFycmF5PiBtX3dhc21NZW1vcnlIYW5kbGVz
QXJyYXk7CiAjZW5kaWYKICAgICBWZWN0b3I8U3RyaW5nPiBtX2Jsb2JVUkxzOwogICAgIHNpemVf
dCBtX21lbW9yeUNvc3QgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCmluZGV4IDA3NjYwODM4MDc0ZTI2ZWJmNDMxZDUxYTlh
ZjMxMDE5YzU5YTA3NjQuLmExNDNmMzA0YjRhYzk5NWU3ZTEyYTRiODg3MTRjYjM0ZTY4YTE2Zjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERh
dGEuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBKU1ZNQ2xpZW50RGF0YTo6Z2V0QWxsV29y
bGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mIHdvcmxkcykKICAgICB9CiB9CiAKLXZv
aWQgSlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZChWTSogdm0pCit2b2lkIEpTVk1DbGll
bnREYXRhOjppbml0Tm9ybWFsV29ybGQoVk0qIHZtLCBXb3JrZXJUaHJlYWRUeXBlIHR5cGUpCiB7
CiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBuZXcgSlNWTUNsaWVudERhdGEoKnZt
KTsKICAgICB2bS0+Y2xpZW50RGF0YSA9IGNsaWVudERhdGE7IC8vIH5WTSBkZWxldGVzIHRoaXMg
cG9pbnRlci4KQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIEpTVk1DbGllbnREYXRhOjppbml0Tm9y
bWFsV29ybGQoVk0qIHZtKQogICAgIHZtLT5oZWFwLmFkZE1hcmtpbmdDb25zdHJhaW50KG1ha2VV
bmlxdWU8RE9NR0NPdXRwdXRDb25zdHJhaW50Pigqdm0sICpjbGllbnREYXRhKSk7CiAKICAgICBj
bGllbnREYXRhLT5tX25vcm1hbFdvcmxkID0gRE9NV3JhcHBlcldvcmxkOjpjcmVhdGUoKnZtLCBE
T01XcmFwcGVyV29ybGQ6OlR5cGU6Ok5vcm1hbCk7Ci0gICAgdm0tPm1fdHlwZWRBcnJheUNvbnRy
b2xsZXIgPSBhZG9wdFJlZihuZXcgV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyKCkpOworICAg
IHZtLT5tX3R5cGVkQXJyYXlDb250cm9sbGVyID0gYWRvcHRSZWYobmV3IFdlYkNvcmVUeXBlZEFy
cmF5Q29udHJvbGxlcih0eXBlID09IFdvcmtlclRocmVhZFR5cGU6OkRlZGljYXRlZFdvcmtlciB8
fCB0eXBlID09IFdvcmtlclRocmVhZFR5cGU6OldvcmtsZXQpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xp
ZW50RGF0YS5oCmluZGV4IGI4NDQwZTg3NzBlNDcyOTFmN2VlMjA2MzE5OWVhMDVjM2M0YmIwYzEu
LjBkYTUzMzI3MDUwODBjNDkxMjdjMzQ0YWEwMjE5MzI1ZGM2NmM3NDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgKQEAgLTI0LDYgKzI0
LDcgQEAKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJXZWJDb3JlQnVp
bHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQnVpbHRpbnMuaCIKKyNpbmNsdWRlICJX
b3JrZXJUaHJlYWRUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKQEAgLTQwLDcgKzQxLDcgQEAgY2xhc3MgSlNWTUNsaWVudERhdGEgOiBw
dWJsaWMgSlNDOjpWTTo6Q2xpZW50RGF0YSB7CiAKICAgICB2aXJ0dWFsIH5KU1ZNQ2xpZW50RGF0
YSgpOwogICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGluaXROb3JtYWxXb3Js
ZChKU0M6OlZNKik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgaW5pdE5vcm1hbFdv
cmxkKEpTQzo6Vk0qLCBXb3JrZXJUaHJlYWRUeXBlKTsKIAogICAgIERPTVdyYXBwZXJXb3JsZCYg
bm9ybWFsV29ybGQoKSB7IHJldHVybiAqbV9ub3JtYWxXb3JsZDsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVy
LmNwcAppbmRleCBjMThmYThlMzY0OGE0NjZiZWEyYzFmOGM4OTNkMTUzZjA5ODc0MGVkLi42ZDAx
NmM4NmFjNzkxZTU1MGEyMTQyMDBkZTNiZDliM2ViODE3NGI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5j
cHAKQEAgLTM0LDcgKzM0LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViQ29yZVR5
cGVkQXJyYXlDb250cm9sbGVyOjpXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIoKSA9IGRlZmF1
bHQ7CitXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXI6OldlYkNvcmVUeXBlZEFycmF5Q29udHJv
bGxlcihib29sIGFsbG93QXRvbWljc1dhaXQpCisgICAgOiBtX2FsbG93QXRvbWljc1dhaXQoYWxs
b3dBdG9taWNzV2FpdCkKK3sKK30KIAogV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyOjp+V2Vi
Q29yZVR5cGVkQXJyYXlDb250cm9sbGVyKCkgPSBkZWZhdWx0OwogCkBAIC01MCw3ICs1Myw3IEBA
IHZvaWQgV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyOjpyZWdpc3RlcldyYXBwZXIoSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAKIGJvb2wgV2ViQ29yZVR5cGVkQXJyYXlDb250cm9s
bGVyOjppc0F0b21pY3NXYWl0QWxsb3dlZE9uQ3VycmVudFRocmVhZCgpCiB7Ci0gICAgcmV0dXJu
ICFpc01haW5UaHJlYWQoKTsKKyAgICByZXR1cm4gbV9hbGxvd0F0b21pY3NXYWl0OwogfQogCiBi
b29sIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcjo6SlNBcnJheUJ1ZmZlck93bmVyOjppc1Jl
YWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwg
dm9pZCosIEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIqKiByZWFzb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJheUNv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVUeXBlZEFycmF5
Q29udHJvbGxlci5oCmluZGV4IGZhYWMyMjYyMjEyZTUzNjhiMDhhYzI5MGZkODA5YmE2ODRjMmRj
NjAuLjUxMTlhZDFmM2EyZWVkMTEwMzg1ZjVhMjU0MDNhYTJmNTdhMGJjOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVUeXBlZEFycmF5Q29udHJv
bGxlci5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2Vi
Q29yZVR5cGVkQXJyYXlDb250cm9sbGVyIDogcHVibGljIEpTQzo6VHlwZWRBcnJheUNvbnRyb2xs
ZXIgewogcHVibGljOgotICAgIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcigpOworICAgIFdl
YkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcihib29sIGFsbG93QXRvbWljc1dhaXQpOwogICAgIHZp
cnR1YWwgfldlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcigpOwogICAgIAogICAgIEpTQzo6SlNB
cnJheUJ1ZmZlciogdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6QXJyYXlCdWZmZXIqKSBvdmVycmlkZTsKQEAgLTUzLDYgKzUzLDcgQEAgY2xhc3Mg
V2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyIDogcHVibGljIEpTQzo6VHlwZWRBcnJheUNvbnRy
b2xsZXIgewogICAgIH07CiAKICAgICBKU0FycmF5QnVmZmVyT3duZXIgbV9vd25lcjsKKyAgICBi
b29sIG1fYWxsb3dBdG9taWNzV2FpdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
aW5kZXggMjdjNzk3ZDM0MGRiNDZiN2UzMWJhNmRiZWIyOTFjYzQzOTI1ODAxZC4uNTE2M2NjY2Ni
OTA3M2JiZmM4NzhiZTE3ZjZiOTVmZDE1N2QyMDg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTY5ODcsNiArNjk4Nyw3
IEBAIHN1YiBJc0Fubm90YXRlZFR5cGUKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmd9OwogICAgIHJldHVybiAxIGlmICR0
eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBdG9tU3RyaW5nfTsKICAgICByZXR1cm4gMSBpZiAk
dHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmd9Owor
ICAgIHJldHVybiAxIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBbGxvd1NoYXJlZH07
CiB9CiAKIHN1YiBHZXRBbm5vdGF0ZWRJRExUeXBlCkBAIC02OTk4LDYgKzY5OTksNyBAQCBzdWIg
R2V0QW5ub3RhdGVkSURMVHlwZQogICAgIHJldHVybiAiSURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmd9OwogICAgIHJldHVybiAiSURMQXRvbVN0cmluZ0FkYXB0b3IiIGlmICR0eXBlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntBdG9tU3RyaW5nfTsKICAgICByZXR1cm4gIklETFJlcXVpcmVz
RXhpc3RpbmdBdG9tU3RyaW5nQWRhcHRvciIgaWYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nfTsKKyAgICByZXR1cm4gIklETEFsbG93U2hhcmVk
QWRhcHRvciIgaWYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0FsbG93U2hhcmVkfTsKIH0K
IAogc3ViIEdldEJhc2VJRExUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvSURMQXR0cmlidXRlcy5qc29uCmluZGV4IGM4ZWNmZjM4NmMyM2NmNjI4NGU5YWFlNzA0
YzRjNmFmNjg0YjIwNDkuLjRlMDNlOWZhNGFhMzFiNGNlOGJlZGNjZDBiOGMwMjlkNDMyZjU5ZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRl
cy5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRl
cy5qc29uCkBAIC0yNCw4ICsyNCw3IEBACiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjog
WyJ0eXBlIl0sCiAgICAgICAgICAgICAic3RhbmRhcmQiOiB7CiAgICAgICAgICAgICAgICAgInVy
bCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNBbGxvd1NoYXJlZCIKLSAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAidW5zdXBwb3J0ZWQiOiB0cnVlCisgICAgICAgICAgICB9
CiAgICAgICAgIH0sCiAgICAgICAgICJBcHBsZUNvcHlyaWdodCI6IHsKICAgICAgICAgICAgICJj
b250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSIsICJhdHRyaWJ1dGUiLCAib3BlcmF0aW9uIl0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2Rlci5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dERlY29kZXIuaWRsCmluZGV4IGRiMzRjYjJlOGE2NTRlODA2MjllM2U2
NDM0N2U0NWJjMDdjNTU0NjEuLjIxNGFkN2UzYjA2M2VhMTdjNzk5MTA2MTlhMGFhNDI3YWQ3ZDUx
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2Rlci5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmlkbApAQCAtNDEsNSArNDEsNSBAQCBkaWN0
aW9uYXJ5IFRleHREZWNvZGVPcHRpb25zIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGVuY29kaW5nOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGZhdGFsOwogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlnbm9yZUJPTTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIFVTVlN0cmluZyBkZWNvZGUob3B0aW9uYWwgQnVmZmVyU291cmNlPyBpbnB1dCwgb3B0
aW9uYWwgVGV4dERlY29kZU9wdGlvbnMgb3B0aW9ucyk7CisgICAgW01heVRocm93RXhjZXB0aW9u
XSBVU1ZTdHJpbmcgZGVjb2RlKG9wdGlvbmFsIFtBbGxvd1NoYXJlZF0gQnVmZmVyU291cmNlPyBp
bnB1dCwgb3B0aW9uYWwgVGV4dERlY29kZU9wdGlvbnMgb3B0aW9ucyk7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UZXh0RW5jb2Rlci5pZGwKaW5kZXggMDVkODI2ZDgyYjI5OTNmODE5ODk2MTBjMGVhZDE5NGIw
YzZjNGI5NC4uNmJjYjg5NWU4YjBkYTUyMmI4YjViNGM1YzIwNmI3YmY2Y2NlN2FkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVGV4dEVuY29kZXIuaWRsCkBAIC0zOSw1ICszOSw1IEBACiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBlbmNvZGluZzsKIAogICAgIFtOZXdPYmplY3RdIFVpbnQ4QXJy
YXkgZW5jb2RlKG9wdGlvbmFsIFVTVlN0cmluZyBpbnB1dCA9ICIiKTsKLSAgICBUZXh0RW5jb2Rl
ckVuY29kZUludG9SZXN1bHQgZW5jb2RlSW50byhVU1ZTdHJpbmcgc291cmNlLCBVaW50OEFycmF5
IGRlc3RpbmF0aW9uKTsKKyAgICBUZXh0RW5jb2RlckVuY29kZUludG9SZXN1bHQgZW5jb2RlSW50
byhVU1ZTdHJpbmcgc291cmNlLCBbQWxsb3dTaGFyZWRdIFVpbnQ4QXJyYXkgZGVzdGluYXRpb24p
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZS5jcHAKaW5kZXggZWYxZDhiY2FkYTI1YmMyNWYxNTE3ZTc4ODllMjQxYzNlNDll
M2RhZS4uN2RiNDlmZTRiMzM2NmNhNjY4M2Y0YjU3MWQxYjc1Yjk5YzVhNDExNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5j
cHAKQEAgLTU3LDcgKzU3LDcgQEAgUmVmPERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPiBEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKGNvbnN0IFdvcmtlclAKIH0KIAogRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGU6OkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFdv
cmtlclBhcmFtZXRlcnMmIHBhcmFtcywgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgRGVk
aWNhdGVkV29ya2VyVGhyZWFkJiB0aHJlYWQsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmln
aW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tl
dFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikKLSAgICA6IFdvcmtlckdsb2JhbFNjb3BlKHBhcmFt
cywgV1RGTW92ZShvcmlnaW4pLCB0aHJlYWQsIFdURk1vdmUodG9wT3JpZ2luKSwgY29ubmVjdGlv
blByb3h5LCBzb2NrZXRQcm92aWRlcikKKyAgICA6IFdvcmtlckdsb2JhbFNjb3BlKFdvcmtlclRo
cmVhZFR5cGU6OkRlZGljYXRlZFdvcmtlciwgcGFyYW1zLCBXVEZNb3ZlKG9yaWdpbiksIHRocmVh
ZCwgV1RGTW92ZSh0b3BPcmlnaW4pLCBjb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyKQog
ICAgICwgbV9uYW1lKHBhcmFtcy5uYW1lKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA1MDJlYzdkNzc2MzU1Zjk2ZTBkZThkYzhjNDM5
MTU4MWY5MDZmNjA3Li42ZjBmNjJkNzgzYzk0ODFkYmFiMWVmOWUzOGU1NzlmNDBhYTFkMjAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtNTks
OCArNTksOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoV29ya2VyR2xvYmFsU2NvcGUpOwogCi1Xb3JrZXJHbG9iYWxTY29wZTo6V29y
a2VyR2xvYmFsU2NvcGUoY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1zLCBSZWY8U2VjdXJp
dHlPcmlnaW4+JiYgb3JpZ2luLCBXb3JrZXJUaHJlYWQmIHRocmVhZCwgUmVmPFNlY3VyaXR5T3Jp
Z2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rp
b25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKQotICAgIDogV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpWTTo6Y3JlYXRlKCksICZ0aHJlYWQpCitXb3JrZXJHbG9i
YWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZSB0eXBlLCBjb25zdCBX
b3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFdv
cmtlclRocmVhZCYgdGhyZWFkLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJD
bGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRl
ciogc29ja2V0UHJvdmlkZXIpCisgICAgOiBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh0eXBl
LCBKU0M6OlZNOjpjcmVhdGUoKSwgJnRocmVhZCkKICAgICAsIG1fdXJsKHBhcmFtcy5zY3JpcHRV
UkwpCiAgICAgLCBtX2lkZW50aWZpZXIocGFyYW1zLmlkZW50aWZpZXIpCiAgICAgLCBtX3VzZXJB
Z2VudChwYXJhbXMudXNlckFnZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5oCmluZGV4IGQ5MjIxZGI5ZjU4NjdhMmMwYjI4OWMzMzhkM2Q0NDIwZjgzNjQ2YzAu
LjdhYjA5ZjZhZjMzZTQ1YjIyMzczODZhMzA2MzEwMWI5ZTU2ZjNkMTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTEyNiw3ICsxMjYsNyBAQCBjbGFz
cyBXb3JrZXJHbG9iYWxTY29wZSA6IHB1YmxpYyBTdXBwbGVtZW50YWJsZTxXb3JrZXJHbG9iYWxT
Y29wZT4sIHB1YmxpYyBCYXNlNgogICAgIGJvb2wgd2ViR0xFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV93ZWJHTEVuYWJsZWQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFdvcmtlckdsb2JhbFNjb3Bl
KGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFdvcmtlclRo
cmVhZCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29u
bmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqKTsKKyAgICBXb3JrZXJHbG9iYWxTY29wZShX
b3JrZXJUaHJlYWRUeXBlLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3Jp
Z2luPiYmLCBXb3JrZXJUaHJlYWQmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKik7CiAKICAgICB2
b2lkIGFwcGx5Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IGY0NDlh
YzAyYmU4MGNmNDhmYjgyOTJjNDI5YWIyYzJlNmIzZmIwYjYuLjIzODRhNWE4YzdkMmEzMDJlZWU1
Y2I0MDVlMTA1ZTAyNWM5ODQzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0zNyw4ICszNyw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKTsKIAotV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU6Oldvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKFJlZjxKU0M6OlZNPiYmIHZtLCBXb3JrZXJPcldvcmtsZXRUaHJl
YWQqIHRocmVhZCkKLSAgICA6IG1fc2NyaXB0KG1ha2VVbmlxdWU8V29ya2VyT3JXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlcj4oV1RGTW92ZSh2bSksIHRoaXMpKQorV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGU6Oldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5cGUgdHlwZSwg
UmVmPEpTQzo6Vk0+JiYgdm0sIFdvcmtlck9yV29ya2xldFRocmVhZCogdGhyZWFkKQorICAgIDog
bV9zY3JpcHQobWFrZVVuaXF1ZTxXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyPih0eXBl
LCBXVEZNb3ZlKHZtKSwgdGhpcykpCiAgICAgLCBtX3RocmVhZCh0aHJlYWQpCiAgICAgLCBtX2lu
c3BlY3RvckNvbnRyb2xsZXIobWFrZVVuaXF1ZTxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyPigq
dGhpcykpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlLmgKaW5kZXggZjBjOTBjMjIxOWJmZTQ5MjZjODI4NzEzNjZjMzg5MDljNjFm
NzQ4NS4uNmMyNDRhMGM0MjdlZTFjOGM2NWZkY2M3NjU5NTJmODc3ZmQ5YjE2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaApA
QCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkVHlwZS5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY3LDcgKzY4LDcgQEAgY2xhc3MgV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcHVibGlj
IFJlZkNvdW4KICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgeyB9CiAKIHByb3RlY3RlZDoKLSAg
ICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShSZWY8SlNDOjpWTT4mJiwgV29ya2VyT3JXb3Jr
bGV0VGhyZWFkKik7CisgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyVGhyZWFk
VHlwZSwgUmVmPEpTQzo6Vk0+JiYsIFdvcmtlck9yV29ya2xldFRocmVhZCopOwogCiAgICAgLy8g
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC4KICAgICBib29sIGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4o
KSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
T3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDQwMWQ1ZjJmNDBiN2I3YmRl
OGU2MzM2NjJhZDMxZmIxY2QzZjI4NjEuLmNkNGVjMjQ2ODI1MjVhYWJjNjQyZDg3N2EwZGEwMTFl
YmRlMTE0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNTAsMTcgKzUwLDE3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotV29ya2VyT3JXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcjo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcihSZWY8Vk0+
JiYgdm0sIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiBnbG9iYWxTY29wZSkKK1dvcmtlck9y
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIo
V29ya2VyVGhyZWFkVHlwZSB0eXBlLCBSZWY8Vk0+JiYgdm0sIFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKiBnbG9iYWxTY29wZSkKICAgICA6IG1fdm0oV1RGTW92ZSh2bSkpCiAgICAgLCBtX2ds
b2JhbFNjb3BlKGdsb2JhbFNjb3BlKQogICAgICwgbV9nbG9iYWxTY29wZVdyYXBwZXIoKm1fdm0p
CiB7CiAgICAgbV92bS0+aGVhcC5hY3F1aXJlQWNjZXNzKCk7IC8vIEl0J3Mgbm90IGNsZWFyIHRo
YXQgd2UgaGF2ZSBnb29kIGRpc2NpcGxpbmUgZm9yIGhlYXAgYWNjZXNzLCBzbyB0dXJuIGl0IG9u
IHBlcm1hbmVudGx5LgotICAgIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29ybGQobV92bS5n
ZXQoKSk7CisgICAgSlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZChtX3ZtLmdldCgpLCB0
eXBlKTsKIH0KIAotV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6V29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcihXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSogZ2xvYmFsU2Nv
cGUpCi0gICAgOiBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKEpTQzo6Vk06OmNyZWF0
ZSgpLCBnbG9iYWxTY29wZSkKK1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6Oldvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIoV29ya2VyVGhyZWFkVHlwZSB0eXBlLCBXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSogZ2xvYmFsU2NvcGUpCisgICAgOiBXb3JrZXJPcldvcmtsZXRT
Y3JpcHRDb250cm9sbGVyKHR5cGUsIEpTQzo6Vk06OmNyZWF0ZSgpLCBnbG9iYWxTY29wZSkKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuaAppbmRleCBlZTU3OTdiZGMwNmIyYTg3NTBjODgyMTBlNzAyY2I1
MzYwOGU0ZTk0Li5jNDkzMDFhZWQzZGQwODlkYTc5NzMyNzYwY2FmMmY3YjY0ZGIxMWI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXIuaApAQCAtMjYsNiArMjYsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIldvcmtlclRocmVhZFR5cGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWJ1Z2dl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUnVuTG9vcFRpbWVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTUxLDggKzUyLDggQEAgY2xhc3MgV29ya2VyT3JXb3JrbGV0
U2NyaXB0Q29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcihSZWY8SlNDOjpWTT4mJiwg
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqKTsKLSAgICBleHBsaWNpdCBXb3JrZXJPcldvcmts
ZXRTY3JpcHRDb250cm9sbGVyKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKik7CisgICAgV29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcihXb3JrZXJUaHJlYWRUeXBlLCBSZWY8SlNDOjpW
TT4mJiwgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqKTsKKyAgICBleHBsaWNpdCBXb3JrZXJP
cldvcmtsZXRTY3JpcHRDb250cm9sbGVyKFdvcmtlclRocmVhZFR5cGUsIFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKik7CiAgICAgfldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIoKTsK
IAogICAgIHZvaWQgcmVsZWFzZUhlYXBBY2Nlc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWRUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTgzMDY1YmVhMWM2M2Y5MTc1NjIzMWEyN2U0
NDhiOWRhMmI5ZGM5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyVGhyZWFkVHlwZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIFdvcmtlclRocmVhZFR5
cGUgOiB1aW50OF90IHsKKyAgICBNYWluLAorICAgIFdvcmtsZXQsCisgICAgRGVkaWNhdGVkV29y
a2VyLAorICAgIFNlcnZpY2VXb3JrZXIsCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGNlNTc5ZjdjNTMxODQwMzcyMWMxYTMzY2I5MDUxYThl
NDUwNWZkZDguLjhkNzNmZjM1NWJhMTBiOGIxMjUwMWE5Njk1M2JmNGY0MDgxNTVhM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuY3BwCkBAIC01Miw3ICs1Miw3IEBAIFJlZjxTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGU+IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKGNvbnN0IFNlcnZpY2VX
b3JrCiB9CiAKIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSwgY29uc3QgV29ya2VyUGFy
YW1ldGVycyYgcGFyYW1zLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBTZXJ2aWNlV29y
a2VyVGhyZWFkJiB0aHJlYWQsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNs
aWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVy
KiBzb2NrZXRQcm92aWRlcikKLSAgICA6IFdvcmtlckdsb2JhbFNjb3BlKHBhcmFtcywgV1RGTW92
ZShvcmlnaW4pLCB0aHJlYWQsIFdURk1vdmUodG9wT3JpZ2luKSwgY29ubmVjdGlvblByb3h5LCBz
b2NrZXRQcm92aWRlcikKKyAgICA6IFdvcmtlckdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5cGU6
OlNlcnZpY2VXb3JrZXIsIHBhcmFtcywgV1RGTW92ZShvcmlnaW4pLCB0aHJlYWQsIFdURk1vdmUo
dG9wT3JpZ2luKSwgY29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlcikKICAgICAsIG1fY29u
dGV4dERhdGEoY3Jvc3NUaHJlYWRDb3B5KGRhdGEpKQogICAgICwgbV9yZWdpc3RyYXRpb24oU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0T3JDcmVhdGUoKnRoaXMsIG5hdmlnYXRvcigpLnNl
cnZpY2VXb3JrZXIoKSwgV1RGTW92ZShtX2NvbnRleHREYXRhLnJlZ2lzdHJhdGlvbikpKQogICAg
ICwgbV9jbGllbnRzKFNlcnZpY2VXb3JrZXJDbGllbnRzOjpjcmVhdGUoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IGQwMjgzNDIwYWQ3
MzE3YWZhOTk3YTBlNDhlMmE4NzU1NWNiNzI0ZGQuLjdiMDA5OTMxNWM2NDM0ODA4ZmJhZDZmYjAz
MTVjNDM0N2MyZGNhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEds
b2JhbFNjb3BlLmNwcApAQCAtNTAsNyArNTAsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoV29ya2xldEdsb2JhbFNjb3BlKTsKIHN0YXRpYyBzdGQ6OmF0b21pYzx1bnNpZ25lZD4gZ051
bWJlck9mV29ya2xldEdsb2JhbFNjb3BlcyB7IDAgfTsKIAogV29ya2xldEdsb2JhbFNjb3BlOjpX
b3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyT3JXb3JrbGV0VGhyZWFkJiB0aHJlYWQsIGNvbnN0IFdv
cmtsZXRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotICAgIDogV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUoSlNDOjpWTTo6Y3JlYXRlKCksICZ0aHJlYWQpCisgICAgOiBXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZShXb3JrZXJUaHJlYWRUeXBlOjpXb3JrbGV0LCBKU0M6OlZNOjpjcmVhdGUoKSwg
JnRocmVhZCkKICAgICAsIG1fdG9wT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUo
KSkKICAgICAsIG1fdXJsKHBhcmFtZXRlcnMud2luZG93VVJMKQogICAgICwgbV9qc1J1bnRpbWVG
bGFncyhwYXJhbWV0ZXJzLmpzUnVudGltZUZsYWdzKQpAQCAtNjIsNyArNjIsNyBAQCBXb3JrbGV0
R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZShXb3JrZXJPcldvcmtsZXRUaHJlYWQmIHRo
cmVhZCwgY29uc3QgV29yawogfQogCiBXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxT
Y29wZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxKU0M6OlZNPiYmIHZtLCBTY3JpcHRTb3VyY2VD
b2RlJiYgY29kZSkKLSAgICA6IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdURk1vdmUodm0p
LCBudWxscHRyKQorICAgIDogV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyVGhyZWFk
VHlwZTo6V29ya2xldCwgV1RGTW92ZSh2bSksIG51bGxwdHIpCiAgICAgLCBtX2RvY3VtZW50KG1h
a2VXZWFrUHRyKGRvY3VtZW50KSkKICAgICAsIG1fdG9wT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVVbmlxdWUoKSkKICAgICAsIG1fdXJsKGNvZGUudXJsKCkpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwppbmRleCA3ZjY2ODljOTRiNDNhNTM3MDQ4ODc5NjcyODE3ZGVlOGNkMmZiYzVm
Li5kOWJkMjc0NDVjYjlhZTc2NGM2M2E1MDVjNzJkM2M3N2RmMTA0OWUyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0xMS0xNCAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBXZWJB
c3NlbWJseS5NZW1vcnkgd2l0aCBzaGFyZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxODY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9z
Y3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3Jp
cHQtYWdlbnQtZm9ybWFsaXNtL3JlcXVpcmVzLXN1Y2Nlc3MuYW55Lndvcmtlci1leHBlY3RlZC50
eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0
cnVjdG9yLmFueS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFueS53b3JrZXItZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9ncm93LmFueS1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5
L2dyb3cuYW55Lndvcmtlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvYnVmZmVyLWludGVyZmFjZS9hdWRp
b2J1ZmZlci1jb3B5LWNoYW5uZWwtZXhwZWN0ZWQudHh0OgorCiAyMDIwLTExLTEyICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIGFkdmFuY2Vk
IHBsdWctaW4gZmVhdHVyZXM6IHNuYXBzaG90dGluZyBhbmQgcGx1Zy1pbiBsb2FkIHBvbGljeQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13
aXRoLXRoZS1qYXZhc2NyaXB0LWFnZW50LWZvcm1hbGlzbS9yZXF1aXJlcy1zdWNjZXNzLmFueS53
b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRl
Z3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWFnZW50LWZvcm1hbGlzbS9yZXF1aXJlcy1zdWNj
ZXNzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IDBiOTg2MGNjYzUzNDRmNTJkZDc4NDUy
MTBiOWQ0MjNjMjVjMTQyODkuLjU1OWYwZmU0MjI5NmY2YWNhNGEwZmEwNTI3NjI5MTNlNjhjNzRk
MzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRp
b24td2l0aC10aGUtamF2YXNjcmlwdC1hZ2VudC1mb3JtYWxpc20vcmVxdWlyZXMtc3VjY2Vzcy5h
bnkud29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2Rl
bC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtYWdlbnQtZm9ybWFsaXNtL3JlcXVp
cmVzLXN1Y2Nlc3MuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZB
SUwgW1tDYW5CbG9ja11dIGluIGEgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUgVHlwZWQgYXJy
YXkgZm9yIHdhaXQvbm90aWZ5IG11c3Qgd3JhcCBhIFNoYXJlZEFycmF5QnVmZmVyLgorUEFTUyBb
W0NhbkJsb2NrXV0gaW4gYSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkv
bWVtb3J5L2NvbnN0cnVjdG9yLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFu
eS1leHBlY3RlZC50eHQKaW5kZXggOWEyNDkwNTdmNDk4MjY0OTQ2ZmJiZTYzMThhZjczMmJhZDVh
N2RlZS4uNGJiNDk0MmExYWVjYmRlNmRkMjc3YWQwYjRmYmE4MjhlMWY5ZDA0ZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBp
L21lbW9yeS9jb25zdHJ1Y3Rvci5hbnktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvY29uc3RydWN0
b3IuYW55LWV4cGVjdGVkLnR4dApAQCAtMTgsMTIgKzE4LDEyIEBAIFBBU1MgT3V0LW9mLXJhbmdl
IG1heGltdW0gdmFsdWUgaW4gZGVzY3JpcHRvcjogNDI5NDk2NzI5NgogUEFTUyBPdXQtb2YtcmFu
Z2UgaW5pdGlhbCB2YWx1ZSBpbiBkZXNjcmlwdG9yOiA2ODcxOTQ3NjczNgogUEFTUyBPdXQtb2Yt
cmFuZ2UgbWF4aW11bSB2YWx1ZSBpbiBkZXNjcmlwdG9yOiA2ODcxOTQ3NjczNgogUEFTUyBJbml0
aWFsIHZhbHVlIGV4Y2VlZHMgbWF4aW11bQotRkFJTCBTaGFyZWQgbWVtb3J5IHdpdGhvdXQgbWF4
aW11bSBhc3NlcnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1l
bW9yeSh7ICJpbml0aWFsIjogMTAsICJzaGFyZWQiOiB0cnVlIH0pIiBkaWQgbm90IHRocm93CitQ
QVNTIFNoYXJlZCBtZW1vcnkgd2l0aG91dCBtYXhpbXVtCiBQQVNTIFByb3h5IGRlc2NyaXB0b3IK
IFBBU1MgT3JkZXIgb2YgZXZhbHVhdGlvbiBmb3IgZGVzY3JpcHRvcgotRkFJTCBPcmRlciBvZiBl
dmFsdWF0aW9uIGZvciBkZXNjcmlwdG9yICh3aXRoIHNoYXJlZCkgYXNzZXJ0X2FycmF5X2VxdWFs
czogbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsiaW5pdGlhbCIsICJpbml0aWFsIHZh
bHVlT2YiLCAibWF4aW11bSIsICJtYXhpbXVtIHZhbHVlT2YiLCAic2hhcmVkIl0gbGVuZ3RoIDUs
IGdvdCBbImluaXRpYWwiLCAiaW5pdGlhbCB2YWx1ZU9mIiwgIm1heGltdW0iLCAibWF4aW11bSB2
YWx1ZU9mIl0gbGVuZ3RoIDQKK1BBU1MgT3JkZXIgb2YgZXZhbHVhdGlvbiBmb3IgZGVzY3JpcHRv
ciAod2l0aCBzaGFyZWQpCiBQQVNTIFplcm8gaW5pdGlhbAogUEFTUyBOb24temVybyBpbml0aWFs
Ci1GQUlMIFN0cmF5IGFyZ3VtZW50IFdlYkFzc2VtYmx5Lk1lbW9yeSBleHBlY3RzIGV4YWN0bHkg
b25lIGFyZ3VtZW50Ci1GQUlMIFNoYXJlZCBtZW1vcnkgYXNzZXJ0X2VxdWFsczogcHJvdG90eXBl
IG9mIGJ1ZmZlciBleHBlY3RlZCBvYmplY3QgIltvYmplY3QgU2hhcmVkQXJyYXlCdWZmZXJdIiBi
dXQgZ290IG9iamVjdCAiW29iamVjdCBBcnJheUJ1ZmZlcl0iCitQQVNTIFN0cmF5IGFyZ3VtZW50
CitQQVNTIFNoYXJlZCBtZW1vcnkKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5hbnku
d29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvY29uc3RydWN0b3IuYW55Lndvcmtlci1leHBlY3Rl
ZC50eHQKaW5kZXggOWEyNDkwNTdmNDk4MjY0OTQ2ZmJiZTYzMThhZjczMmJhZDVhN2RlZS4uNGJi
NDk0MmExYWVjYmRlNmRkMjc3YWQwYjRmYmE4MjhlMWY5ZDA0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9j
b25zdHJ1Y3Rvci5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9y
LmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0xOCwxMiArMTgsMTIgQEAgUEFTUyBPdXQtb2Yt
cmFuZ2UgbWF4aW11bSB2YWx1ZSBpbiBkZXNjcmlwdG9yOiA0Mjk0OTY3Mjk2CiBQQVNTIE91dC1v
Zi1yYW5nZSBpbml0aWFsIHZhbHVlIGluIGRlc2NyaXB0b3I6IDY4NzE5NDc2NzM2CiBQQVNTIE91
dC1vZi1yYW5nZSBtYXhpbXVtIHZhbHVlIGluIGRlc2NyaXB0b3I6IDY4NzE5NDc2NzM2CiBQQVNT
IEluaXRpYWwgdmFsdWUgZXhjZWVkcyBtYXhpbXVtCi1GQUlMIFNoYXJlZCBtZW1vcnkgd2l0aG91
dCBtYXhpbXVtIGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBuZXcgV2ViQXNzZW1i
bHkuTWVtb3J5KHsgImluaXRpYWwiOiAxMCwgInNoYXJlZCI6IHRydWUgfSkiIGRpZCBub3QgdGhy
b3cKK1BBU1MgU2hhcmVkIG1lbW9yeSB3aXRob3V0IG1heGltdW0KIFBBU1MgUHJveHkgZGVzY3Jp
cHRvcgogUEFTUyBPcmRlciBvZiBldmFsdWF0aW9uIGZvciBkZXNjcmlwdG9yCi1GQUlMIE9yZGVy
IG9mIGV2YWx1YXRpb24gZm9yIGRlc2NyaXB0b3IgKHdpdGggc2hhcmVkKSBhc3NlcnRfYXJyYXlf
ZXF1YWxzOiBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkgWyJpbml0aWFsIiwgImluaXRp
YWwgdmFsdWVPZiIsICJtYXhpbXVtIiwgIm1heGltdW0gdmFsdWVPZiIsICJzaGFyZWQiXSBsZW5n
dGggNSwgZ290IFsiaW5pdGlhbCIsICJpbml0aWFsIHZhbHVlT2YiLCAibWF4aW11bSIsICJtYXhp
bXVtIHZhbHVlT2YiXSBsZW5ndGggNAorUEFTUyBPcmRlciBvZiBldmFsdWF0aW9uIGZvciBkZXNj
cmlwdG9yICh3aXRoIHNoYXJlZCkKIFBBU1MgWmVybyBpbml0aWFsCiBQQVNTIE5vbi16ZXJvIGlu
aXRpYWwKLUZBSUwgU3RyYXkgYXJndW1lbnQgV2ViQXNzZW1ibHkuTWVtb3J5IGV4cGVjdHMgZXhh
Y3RseSBvbmUgYXJndW1lbnQKLUZBSUwgU2hhcmVkIG1lbW9yeSBhc3NlcnRfZXF1YWxzOiBwcm90
b3R5cGUgb2YgYnVmZmVyIGV4cGVjdGVkIG9iamVjdCAiW29iamVjdCBTaGFyZWRBcnJheUJ1ZmZl
cl0iIGJ1dCBnb3Qgb2JqZWN0ICJbb2JqZWN0IEFycmF5QnVmZmVyXSIKK1BBU1MgU3RyYXkgYXJn
dW1lbnQKK1BBU1MgU2hhcmVkIG1lbW9yeQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2dyb3cuYW55LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnktZXhwZWN0ZWQudHh0CmluZGV4IDQwMDlmNmFlYjJm
OGU3MGMxOGIwMDNmMDZmOGMwNzVhZjI0NDQ3NjMuLmE1ZGU2MGRkNjI4MDY2MzI1MDdjZmZhYTU2
NWEyZGFkODliN2NmMGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnktZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2Fw
aS9tZW1vcnkvZ3Jvdy5hbnktZXhwZWN0ZWQudHh0CkBAIC0xNyw1ICsxNyw1IEBAIFBBU1MgT3V0
LW9mLXJhbmdlIGFyZ3VtZW50OiA2ODcxOTQ3NjczNgogUEFTUyBPdXQtb2YtcmFuZ2UgYXJndW1l
bnQ6ICIweDEwMDAwMDAwMCIKIFBBU1MgT3V0LW9mLXJhbmdlIGFyZ3VtZW50OiBvYmplY3QgIltv
YmplY3QgT2JqZWN0XSIKIFBBU1MgU3RyYXkgYXJndW1lbnQKLUZBSUwgR3Jvd2luZyBzaGFyZWQg
bWVtb3J5IGRvZXMgbm90IGRldGFjaCBvbGQgYnVmZmVyIGFzc2VydF9lcXVhbHM6IEJ1ZmZlciBi
ZWZvcmUgZ3Jvd2luZzogY29uc3RydWN0b3IgZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCitQ
QVNTIEdyb3dpbmcgc2hhcmVkIG1lbW9yeSBkb2VzIG5vdCBkZXRhY2ggb2xkIGJ1ZmZlcgogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvbWVtb3J5L2dyb3cuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2dyb3cu
YW55Lndvcmtlci1leHBlY3RlZC50eHQKaW5kZXggNDAwOWY2YWViMmY4ZTcwYzE4YjAwM2YwNmY4
YzA3NWFmMjQ0NDc2My4uYTVkZTYwZGQ2MjgwNjYzMjUwN2NmZmFhNTY1YTJkYWQ4OWI3Y2YwZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
YXNtL2pzYXBpL21lbW9yeS9ncm93LmFueS53b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkv
Z3Jvdy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMTcsNSArMTcsNSBAQCBQQVNTIE91dC1v
Zi1yYW5nZSBhcmd1bWVudDogNjg3MTk0NzY3MzYKIFBBU1MgT3V0LW9mLXJhbmdlIGFyZ3VtZW50
OiAiMHgxMDAwMDAwMDAiCiBQQVNTIE91dC1vZi1yYW5nZSBhcmd1bWVudDogb2JqZWN0ICJbb2Jq
ZWN0IE9iamVjdF0iCiBQQVNTIFN0cmF5IGFyZ3VtZW50Ci1GQUlMIEdyb3dpbmcgc2hhcmVkIG1l
bW9yeSBkb2VzIG5vdCBkZXRhY2ggb2xkIGJ1ZmZlciBhc3NlcnRfZXF1YWxzOiBCdWZmZXIgYmVm
b3JlIGdyb3dpbmc6IGNvbnN0cnVjdG9yIGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQorUEFT
UyBHcm93aW5nIHNoYXJlZCBtZW1vcnkgZG9lcyBub3QgZGV0YWNoIG9sZCBidWZmZXIKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJh
dWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb2J1ZmZlci1pbnRlcmZhY2UvYXVkaW9idWZmZXIt
Y29weS1jaGFubmVsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9idWZmZXItaW50
ZXJmYWNlL2F1ZGlvYnVmZmVyLWNvcHktY2hhbm5lbC1leHBlY3RlZC50eHQKaW5kZXggMDhkNTBm
OGI1MWZlNzQwYTc2MDAxMjg2ZTQ5OWRiZGIwNWViZWI0Yi4uMzc5MzRmZWNmMzY5NDE0YWZlZmZh
NzY1ZjQ1OWRhYzhlMDRmMTljOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb2J1ZmZl
ci1pbnRlcmZhY2UvYXVkaW9idWZmZXItY29weS1jaGFubmVsLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1h
dWRpby1hcGkvdGhlLWF1ZGlvYnVmZmVyLWludGVyZmFjZS9hdWRpb2J1ZmZlci1jb3B5LWNoYW5u
ZWwtZXhwZWN0ZWQudHh0CkBAIC0xOSw5ICsxOSw5IEBAIFBBU1MgICA0OiBidWZmZXIuY29weUZy
b21DaGFubmVsKHgsIDMpIHRocmV3IEluZGV4U2l6ZUVycm9yOiAiTm90IGEgdmFsaWQgY2hhbm5l
CiBQQVNTICAgNTogYnVmZmVyLmNvcHlGcm9tQ2hhbm5lbCh4LCAwLCAtMSkgZGlkIG5vdCB0aHJv
dyBhbiBleGNlcHRpb24uCiBQQVNTICAgNjogYnVmZmVyLmNvcHlGcm9tQ2hhbm5lbCh4LCAwLCAx
NikgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24uCiBQQVNTICAgNzogYnVmZmVyLmNvcHlGcm9t
Q2hhbm5lbCh4LCAzKSB0aHJldyBJbmRleFNpemVFcnJvcjogIk5vdCBhIHZhbGlkIGNoYW5uZWxO
dW1iZXIuIi4KLUZBSUwgWCA4OiBidWZmZXIuY29weUZyb21DaGFubmVsKFNoYXJlZEFycmF5QnVm
ZmVyIHZpZXcsIDApIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uLiBhc3NlcnRfdHJ1ZTogZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgWCA5OiBidWZmZXIuY29weUZyb21DaGFubmVsKFNo
YXJlZEFycmF5QnVmZmVyIHZpZXcsIDAsIDApIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uLiBh
c3NlcnRfdHJ1ZTogZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgPCBbY29weUZyb20tZXhj
ZXB0aW9uc10gMiBvdXQgb2YgMTEgYXNzZXJ0aW9ucyB3ZXJlIGZhaWxlZC4gYXNzZXJ0X3RydWU6
IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitQQVNTICAgODogYnVmZmVyLmNvcHlGcm9tQ2hhbm5l
bChTaGFyZWRBcnJheUJ1ZmZlciB2aWV3LCAwKSB0aHJldyBUeXBlRXJyb3I6ICJBcmd1bWVudCAx
ICgnZGVzdGluYXRpb24nKSB0byBBdWRpb0J1ZmZlci5jb3B5RnJvbUNoYW5uZWwgbXVzdCBiZSBh
biBpbnN0YW5jZSBvZiBGbG9hdDMyQXJyYXkiLgorUEFTUyAgIDk6IGJ1ZmZlci5jb3B5RnJvbUNo
YW5uZWwoU2hhcmVkQXJyYXlCdWZmZXIgdmlldywgMCwgMCkgdGhyZXcgVHlwZUVycm9yOiAiQXJn
dW1lbnQgMSAoJ2Rlc3RpbmF0aW9uJykgdG8gQXVkaW9CdWZmZXIuY29weUZyb21DaGFubmVsIG11
c3QgYmUgYW4gaW5zdGFuY2Ugb2YgRmxvYXQzMkFycmF5Ii4KK1BBU1MgPCBbY29weUZyb20tZXhj
ZXB0aW9uc10gQWxsIGFzc2VydGlvbnMgcGFzc2VkLiAodG90YWwgMTEgYXNzZXJ0aW9ucykKIFBB
U1MgPiBbY29weVRvLWV4Y2VwdGlvbnNdCiBQQVNTICAgQXVkaW9CdWZmZXIucHJvdG90eXBlLmNv
cHlUb0NoYW5uZWwgZG9lcyBleGlzdC4KIFBBU1MgICAwOiBidWZmZXIuY29weVRvQ2hhbm5lbChu
dWxsLCAwKSB0aHJldyBUeXBlRXJyb3I6ICJBcmd1bWVudCAxICgnc291cmNlJykgdG8gQXVkaW9C
dWZmZXIuY29weVRvQ2hhbm5lbCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEZsb2F0MzJBcnJheSIu
CkBAIC0zMSw5ICszMSw5IEBAIFBBU1MgICAzOiBidWZmZXIuY29weVRvQ2hhbm5lbCh4LCAzKSB0
aHJldyBJbmRleFNpemVFcnJvcjogIk5vdCBhIHZhbGlkIGNoYW5uZWxOCiBQQVNTICAgNDogYnVm
ZmVyLmNvcHlUb0NoYW5uZWwoeCwgMCwgLTEpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uLgog
UEFTUyAgIDU6IGJ1ZmZlci5jb3B5VG9DaGFubmVsKHgsIDAsIDE2KSBkaWQgbm90IHRocm93IGFu
IGV4Y2VwdGlvbi4KIFBBU1MgICA2OiBidWZmZXIuY29weVRvQ2hhbm5lbCh4LCAzKSB0aHJldyBJ
bmRleFNpemVFcnJvcjogIk5vdCBhIHZhbGlkIGNoYW5uZWxOdW1iZXIuIi4KLUZBSUwgWCA3OiBi
dWZmZXIuY29weVRvQ2hhbm5lbChTaGFyZWRBcnJheUJ1ZmZlciB2aWV3LCAwKSBkaWQgbm90IHRo
cm93IGFuIGV4Y2VwdGlvbi4gYXNzZXJ0X3RydWU6IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1G
QUlMIFggODogYnVmZmVyLmNvcHlUb0NoYW5uZWwoU2hhcmVkQXJyYXlCdWZmZXIgdmlldywgMCwg
MCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24uIGFzc2VydF90cnVlOiBleHBlY3RlZCB0cnVl
IGdvdCBmYWxzZQotRkFJTCA8IFtjb3B5VG8tZXhjZXB0aW9uc10gMiBvdXQgb2YgMTAgYXNzZXJ0
aW9ucyB3ZXJlIGZhaWxlZC4gYXNzZXJ0X3RydWU6IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitQ
QVNTICAgNzogYnVmZmVyLmNvcHlUb0NoYW5uZWwoU2hhcmVkQXJyYXlCdWZmZXIgdmlldywgMCkg
dGhyZXcgVHlwZUVycm9yOiAiQXJndW1lbnQgMSAoJ3NvdXJjZScpIHRvIEF1ZGlvQnVmZmVyLmNv
cHlUb0NoYW5uZWwgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBGbG9hdDMyQXJyYXkiLgorUEFTUyAg
IDg6IGJ1ZmZlci5jb3B5VG9DaGFubmVsKFNoYXJlZEFycmF5QnVmZmVyIHZpZXcsIDAsIDApIHRo
cmV3IFR5cGVFcnJvcjogIkFyZ3VtZW50IDEgKCdzb3VyY2UnKSB0byBBdWRpb0J1ZmZlci5jb3B5
VG9DaGFubmVsIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgRmxvYXQzMkFycmF5Ii4KK1BBU1MgPCBb
Y29weVRvLWV4Y2VwdGlvbnNdIEFsbCBhc3NlcnRpb25zIHBhc3NlZC4gKHRvdGFsIDEwIGFzc2Vy
dGlvbnMpCiBQQVNTID4gW2NvcHlGcm9tLXZhbGlkYXRlXQogUEFTUyAgIGJ1ZmZlci5jb3B5RnJv
bUNoYW5uZWwoZHN0OCwgMCkgaXMgaWRlbnRpY2FsIHRvIHRoZSBhcnJheSBbMSwyLDMsNCw1LDYs
Nyw4XS4KIFBBU1MgICBidWZmZXIuY29weUZyb21DaGFubmVsKGRzdDgsIDEpIGlzIGlkZW50aWNh
bCB0byB0aGUgYXJyYXkgWzIsMyw0LDUsNiw3LDgsOV0uCkBAIC02MCw1ICs2MCw1IEBAIFBBU1Mg
ICBidWZmZXIuY29weVRvQ2hhbm5lbChzcmMxMCwgMCwgNSkgaXMgaWRlbnRpY2FsIHRvIHRoZSBh
cnJheSBbLTEsLTEsLTEsLTEsCiBQQVNTICAgYnVmZmVyLmNvcHlUb0NoYW5uZWwoc3JjMTAsIDEs
IDUpIGlzIGlkZW50aWNhbCB0byB0aGUgYXJyYXkgWy0xLC0xLC0xLC0xLC0xLDEsMiwzLDQsNSw2
LDcsOCw5LDEwLC0xLi4uXS4KIFBBU1MgICBidWZmZXIuY29weVRvQ2hhbm5lbChzcmMxMCwgMiwg
NSkgaXMgaWRlbnRpY2FsIHRvIHRoZSBhcnJheSBbLTEsLTEsLTEsLTEsLTEsMSwyLDMsNCw1LDYs
Nyw4LDksMTAsLTEuLi5dLgogUEFTUyA8IFtjb3B5VG8tdmFsaWRhdGVdIEFsbCBhc3NlcnRpb25z
IHBhc3NlZC4gKHRvdGFsIDEwIGFzc2VydGlvbnMpCi1GQUlMICMgQVVESVQgVEFTSyBSVU5ORVIg
RklOSVNIRUQ6IDIgb3V0IG9mIDUgdGFza3Mgd2VyZSBmYWlsZWQuIGFzc2VydF90cnVlOiBleHBl
Y3RlZCB0cnVlIGdvdCBmYWxzZQorUEFTUyAjIEFVRElUIFRBU0sgUlVOTkVSIEZJTklTSEVEOiA1
IHRhc2tzIHJhbiBzdWNjZXNzZnVsbHkuCiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9n
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjA5YjVmOGE1NjhjNDcyZTkwNGUyOWIzYmRlYzJj
ZmUxZmZlYjI5Ny4uZDVlODA0MjRiOTU3MjRmMjUzZDM2OWQwYWZiZTBmM2Q2ZjQwOTYxOCAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAyMC0xMS0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBXZWJBc3NlbWJseS5NZW1vcnkgd2l0aCBzaGFy
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODY5
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2Fz
bS9mdW5jdGlvbi10ZXN0cy90cmFwLWxvYWQtc2hhcmVkLmpzOiBBZGRlZC4KKyAgICAgICAgKHdh
c21GcmFtZUNvdW50RnJvbUVycm9yKToKKyAgICAgICAgKiB3YXNtL2Z1bmN0aW9uLXRlc3RzL3Ry
YXAtc3RvcmUtc2hhcmVkLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL2pzLWFwaS90ZXN0X21l
bW9yeS5qczoKKyAgICAgICAgKGJpbmFyeVNob3VsZE5vdFBhcnNlKToKKyAgICAgICAgKiB3YXNt
L3N0cmVzcy9zaGFyZWQtbWVtb3J5LWVycm9ycy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQu
dGhyb3dzKToKKyAgICAgICAgKiB3YXNtL3N0cmVzcy9zaGFyZWQtd2FzbS1tZW1vcnktYnVmZmVy
LmpzOiBBZGRlZC4KKwogMjAyMC0xMS0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHNraXAgbmV3IElDVSByZWxhdGVkIHRlc3RzIGlu
IE1JUFMgYW5kIEFSTXY3IGFuZCBhZGp1c3QgaXQgZm9yIElDVSA2NQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtbG9hZC1zaGFyZWQuanMgYi9KU1Rlc3RzL3dh
c20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLXNoYXJlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTg5MGE3
YWFkNTdlNjQ4MjRkMTE0YmIyYTMxMTgwNjMyNDQwMTZiCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtbG9hZC1zaGFyZWQuanMKQEAgLTAsMCArMSwz
NCBAQAoraW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcycKK2ltcG9ydCAqIGFzIGFz
c2VydCBmcm9tICcuLi9hc3NlcnQuanMnCisKK2NvbnN0IHBhZ2VTaXplID0gNjQgKiAxMDI0Owor
Y29uc3QgbnVtUGFnZXMgPSAxMDsKKworY29uc3QgYnVpbGRlciA9IChuZXcgQnVpbGRlcigpKQor
ICAgIC5UeXBlKCkuRW5kKCkKKyAgICAuSW1wb3J0KCkKKyAgICAgICAgLk1lbW9yeSgiYSIsICJi
Iiwge2luaXRpYWw6IG51bVBhZ2VzfSkKKyAgICAuRW5kKCkKKyAgICAuRnVuY3Rpb24oKS5FbmQo
KQorICAgIC5FeHBvcnQoKS5GdW5jdGlvbigiZm9vIikuRW5kKCkKKyAgICAuQ29kZSgpCisgICAg
ICAgIC5GdW5jdGlvbigiZm9vIiwge3BhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMyIn0pCisgICAg
ICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgIC5JMzJMb2FkKDIsIDApCisgICAgICAg
ICAgICAuUmV0dXJuKCkKKyAgICAgICAgLkVuZCgpCisgICAgLkVuZCgpOworCitjb25zdCBiaW4g
PSBidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCk7Citjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNz
ZW1ibHkuTW9kdWxlKGJpbik7Citjb25zdCBmb28gPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2Uo
bW9kdWxlLCB7YToge2I6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6IG51bVBhZ2Vz
LCBtYXhpbXVtOiBudW1QYWdlcyAqIDIsIHNoYXJlZDogdHJ1ZX0pfX0pLmV4cG9ydHMuZm9vOwor
CitmdW5jdGlvbiB3YXNtRnJhbWVDb3VudEZyb21FcnJvcihlKSB7CisgICAgbGV0IHN0YWNrRnJh
bWVzID0gZS5zdGFjay5zcGxpdCgiXG4iKS5maWx0ZXIoKHMpID0+IHMuaW5kZXhPZigid2FzbS0i
KSAhPT0gLTEpOworICAgIHJldHVybiBzdGFja0ZyYW1lcy5sZW5ndGg7Cit9CisKK2ZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgY29uc3QgZSA9IGFzc2VydC50aHJvd3MoKCkg
PT4gZm9vKG51bVBhZ2VzICogcGFnZVNpemUgKyAxKSwgV2ViQXNzZW1ibHkuUnVudGltZUVycm9y
LCAiT3V0IG9mIGJvdW5kcyBtZW1vcnkgYWNjZXNzIik7CisgICAgYXNzZXJ0LmVxKHdhc21GcmFt
ZUNvdW50RnJvbUVycm9yKGUpLCAyKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9mdW5j
dGlvbi10ZXN0cy90cmFwLXN0b3JlLXNoYXJlZC5qcyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10
ZXN0cy90cmFwLXN0b3JlLXNoYXJlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOGNhOWE4OTYzODM5MWJmMDRl
ZWRjYmI2YjdkM2ZjNTQxZTgxNGRhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL2Z1
bmN0aW9uLXRlc3RzL3RyYXAtc3RvcmUtc2hhcmVkLmpzCkBAIC0wLDAgKzEsMjkgQEAKK2ltcG9y
dCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnCitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAn
Li4vYXNzZXJ0LmpzJworCitjb25zdCBwYWdlU2l6ZSA9IDY0ICogMTAyNDsKK2NvbnN0IG51bVBh
Z2VzID0gMTA7CisKK3sKKyAgICBjb25zdCBidWlsZGVyID0gKG5ldyBCdWlsZGVyKCkpCisgICAg
ICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkltcG9ydCgpCisgICAgICAgICAgICAuTWVtb3J5
KCJhIiwgImIiLCB7aW5pdGlhbDogbnVtUGFnZXN9KQorICAgICAgICAuRW5kKCkKKyAgICAgICAg
LkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLkV4cG9ydCgpLkZ1bmN0aW9uKCJmb28iKS5FbmQo
KQorICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImZvbyIsIHtwYXJhbXM6
IFsiaTMyIiwgImkzMiJdfSkKKyAgICAgICAgICAgICAgICAuR2V0TG9jYWwoMSkKKyAgICAgICAg
ICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgICAuSTMyU3RvcmUoMiwgMCkKKyAg
ICAgICAgICAgIC5FbmQoKQorICAgICAgICAuRW5kKCk7CisKKyAgICBjb25zdCBiaW4gPSBidWls
ZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCk7CisgICAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2Vt
Ymx5Lk1vZHVsZShiaW4pOworICAgIGNvbnN0IGZvbyA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5j
ZShtb2R1bGUsIHthOiB7YjogbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDogbnVtUGFn
ZXMsIG1heGltdW06IG51bVBhZ2VzICogMiwgc2hhcmVkOiB0cnVlfSl9fSkuZXhwb3J0cy5mb287
CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspCisgICAgICAgIGFzc2VydC50
aHJvd3MoKCkgPT4gZm9vKGksIG51bVBhZ2VzICogcGFnZVNpemUgKyAxKSwgV2ViQXNzZW1ibHku
UnVudGltZUVycm9yLCAiT3V0IG9mIGJvdW5kcyBtZW1vcnkgYWNjZXNzIik7Cit9CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfbWVtb3J5LmpzIGIvSlNUZXN0cy93YXNtL2pz
LWFwaS90ZXN0X21lbW9yeS5qcwppbmRleCA1MjA1OTkyNzBjNTBiZGM4ZWMyYTVlMWE1MTk1ZTFj
Y2NiMDljOTQ4Li43MGViZGUyODYyMzJlMTgxZjVlZGNjNTI5YWQyMGU0ZjZhMTUwOTM1IDEwMDY0
NAotLS0gYS9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfbWVtb3J5LmpzCisrKyBiL0pTVGVzdHMv
d2FzbS9qcy1hcGkvdGVzdF9tZW1vcnkuanMKQEAgLTEyNCw3ICsxMjQsNyBAQCBmdW5jdGlvbiBi
aW5hcnlTaG91bGROb3RQYXJzZShidWlsZGVyKSB7CiAKIHsKICAgICBhc3NlcnQudGhyb3dzKCgp
ID0+IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoMjApLCBUeXBlRXJyb3IsICJXZWJBc3NlbWJseS5N
ZW1vcnkgZXhwZWN0cyBpdHMgZmlyc3QgYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0Iik7IAotICAg
IGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7fSwge30pLCBUeXBl
RXJyb3IsICAiV2ViQXNzZW1ibHkuTWVtb3J5IGV4cGVjdHMgZXhhY3RseSBvbmUgYXJndW1lbnQi
KTsKKyAgICBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOjF9LCB7fSk7CiB9CiAKIGZ1
bmN0aW9uIHRlc3QoZikgewpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3N0cmVzcy9zaGFyZWQt
bWVtb3J5LWVycm9ycy5qcyBiL0pTVGVzdHMvd2FzbS9zdHJlc3Mvc2hhcmVkLW1lbW9yeS1lcnJv
cnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTY0YmZmYjczZWE5MDhhODc5YjA0ODdiY2I3Nzc5ZjlmNzE3MzQw
ZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9zdHJlc3Mvc2hhcmVkLW1lbW9yeS1l
cnJvcnMuanMKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fz
c2VydC5qcyc7CisKK2Fzc2VydC50aHJvd3MoKCkgPT4geworICAgIG5ldyBXZWJBc3NlbWJseS5N
ZW1vcnkoeyBpbml0aWFsOiAxLCBzaGFyZWQ6IHRydWUgfSk7Cit9LCBUeXBlRXJyb3IsIGAnbWF4
aW11bScgcGFnZSBjb3VudCBtdXN0IGJlIGRlZmluZWQgaWYgJ3NoYXJlZCcgaXMgdHJ1ZWApOwor
Cithc3NlcnQudGhyb3dzKCgpID0+IHsKKyAgICBsZXQgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5
Lk1lbW9yeSh7IGluaXRpYWw6IDEsIG1heGltdW06IDIsIHNoYXJlZDogdHJ1ZSB9KTsKKyAgICBt
ZW1vcnkuZ3JvdygzKTsKK30sIFJhbmdlRXJyb3IsIGBXZWJBc3NlbWJseS5NZW1vcnkuZ3JvdyB3
b3VsZCBleGNlZWQgdGhlIG1lbW9yeSdzIGRlY2xhcmVkIG1heGltdW0gc2l6ZWApOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy93YXNtL3N0cmVzcy9zaGFyZWQtd2FzbS1tZW1vcnktYnVmZmVyLmpzIGIv
SlNUZXN0cy93YXNtL3N0cmVzcy9zaGFyZWQtd2FzbS1tZW1vcnktYnVmZmVyLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ4OTYxM2M5MDkyNTU3MDQ1NmU5NTA4NDUxZTVlMWMwM2RlMTZlYzIKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3dhc20vc3RyZXNzL3NoYXJlZC13YXNtLW1lbW9yeS1idWZmZXIuanMK
QEAgLTAsMCArMSwyNCBAQAoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcycK
KworbGV0IHBhZ2VTaXplID0gNjQgPDwgMTA7CitsZXQgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5
Lk1lbW9yeSh7CisgICAgaW5pdGlhbDogMSwKKyAgICBtYXhpbXVtOiA1LAorICAgIHNoYXJlZDog
dHJ1ZSwKK30pOworbGV0IGJ1ZmZlcjEgPSBtZW1vcnkuYnVmZmVyOworYXNzZXJ0LmVxKGJ1ZmZl
cjEuYnl0ZUxlbmd0aCwgcGFnZVNpemUgKiAxKTsKK2Fzc2VydC5lcShidWZmZXIxLCBtZW1vcnku
YnVmZmVyKTsKKworbWVtb3J5Lmdyb3coMSk7CitsZXQgYnVmZmVyMiA9IG1lbW9yeS5idWZmZXI7
Cithc3NlcnQuZXEoYnVmZmVyMS5ieXRlTGVuZ3RoLCBwYWdlU2l6ZSAqIDEpOworYXNzZXJ0LmVx
KGJ1ZmZlcjIuYnl0ZUxlbmd0aCwgcGFnZVNpemUgKiAyKTsKK2Fzc2VydC5mYWxzeShidWZmZXIx
ID09PSBidWZmZXIyKTsKKworbGV0IGJ5dGVzMSA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcjEpOwor
bGV0IGJ5dGVzMiA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcjIpOworYnl0ZXMxWzBdID0gNDI7Cith
c3NlcnQuZXEoYnl0ZXMyWzBdLCA0Mik7CitieXRlczJbMF0gPSA0MzsKK2Fzc2VydC5lcShieXRl
czFbMF0sIDQzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414157</attachid>
            <date>2020-11-14 23:21:47 -0800</date>
            <delta_ts>2020-11-16 15:12:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218693-20201114232146.patch</filename>
            <type>text/plain</type>
            <size>171999</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YjNmOGM4ZDRkNWRjZjQwNzBkMmY1MmUzY2RiZGEzMzZiMmVjYWQ0Li4yNGMwZDM0ZmRmYzQ0YmNm
ZGY3ODI1YjdjNTlhNWM0MzBjMDcyMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMjAtMTEtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgV2ViQXNzZW1ibHkuTWVtb3J5IHdpdGggc2hh
cmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg2
OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogbGxpbnQvTExJbnRQQ1Jhbmdlcy5oOgorICAgICAgICAoSlND
OjpMTEludDo6aXNXYXNtTExJbnRQQyk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc206CisgICAgICAgICogbGxpbnQvV2ViQXNzZW1ibHkuYXNtOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheUJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyOjp0b1dy
YXBwZWRBbGxvd1NoYXJlZCk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3Ojp0b1dyYXBwZWRBbGxvd1NoYXJlZCk6CisgICAgICAg
ICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAgICAoSlNDOjpKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dG9XcmFwcGVkQWxsb3dTaGFyZWQpOgorICAg
ICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Om92ZXJyaWRlRGVmYXVs
dHMpOgorICAgICAgICAoSlNDOjpPcHRpb25zOjppbml0aWFsaXplKToKKyAgICAgICAgKiB3YXNt
L1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJh
dG9yOjpBaXJJUkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9y
OjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZSk6CisgICAgICAgIChKU0M6Oldhc206OkFp
cklSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWly
SVJHZW5lcmF0b3I6OmVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZENhbGwpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJ
UkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OnJlc3RvcmVXZWJBc3Nl
bWJseUdsb2JhbFN0YXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRk
Q3VycmVudE1lbW9yeSk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmVtaXRD
aGVja0FuZFByZXBhcmVQb2ludGVyKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRv
cjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZENhbGxJ
bmRpcmVjdCk6CisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6CisgICAgICAgIChKU0M6
Oldhc206Ondhc21Ub1dhc20pOgorICAgICAgICAqIHdhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxl
ci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OnRyYXBIYW5kbGVyKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6ZW5hYmxlRmFzdE1lbW9yeSk6CisgICAgICAgIChKU0M6Oldhc206OnByZXBhcmVGYXN0
TWVtb3J5KToKKyAgICAgICAgKiB3YXNtL1dhc21JbnN0YW5jZS5oOgorICAgICAgICAoSlNDOjpX
YXNtOjpJbnN0YW5jZTo6Y2FjaGVkTWVtb3J5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6
SW5zdGFuY2U6OmNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6
Oldhc206Okluc3RhbmNlOjp1cGRhdGVDYWNoZWRNZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNt
OjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUpOgorICAgICAgICAo
SlNDOjpXYXNtOjpJbnN0YW5jZTo6Y2FjaGVkTWVtb3J5U2l6ZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUpOiBE
ZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeS5jcHA6CisgICAgICAgIChKU0M6Oldh
c206Ok1lbW9yeUhhbmRsZTo6TWVtb3J5SGFuZGxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVt
b3J5SGFuZGxlOjp+TWVtb3J5SGFuZGxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5OjpN
ZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6Oldhc206Ok1lbW9yeTo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5
OjphZGRyZXNzSXNJbkFjdGl2ZUdyb3dhYmxlTWVtb3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6
TWVtb3J5Ojpncm93U2hhcmVkKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5Ojpncm93KToK
KyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
V2FzbTo6TWVtb3J5Ojp+TWVtb3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6TWVt
b3J5OjphZGRyZXNzSXNJbkFjdGl2ZUZhc3RNZW1vcnkpOiBEZWxldGVkLgorICAgICAgICAqIHdh
c20vV2FzbU1lbW9yeS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmFkZHJlc3NJc0lu
QWN0aXZlR3Jvd2FibGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Om9wZXJh
dG9yIGJvb2wgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Om1l
bW9yeSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6c2l6ZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6c2l6ZUluUGFnZXMg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmluaXRpYWwgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Om1heGltdW0gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Om1vZGUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmNoZWNrKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6V2FzbTo6TWVtb3J5OjpvZmZzZXRPZk1lbW9yeSk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Oldhc206Ok1lbW9yeTo6b2Zmc2V0T2ZTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6V2FzbTo6TWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUZhc3RNZW1vcnkpOiBEZWxldGVkLgor
ICAgICAgICAqIHdhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6UGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5u
ZWRSZWdpc3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyk6CisgICAgICAgICogd2FzbS9XYXNt
TWVtb3J5SW5mb3JtYXRpb24uaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGlubmVkUmVnaXN0ZXJJ
bmZvOjp0b1NhdmUgY29uc3QpOgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeU1vZGUuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjptYWtlU3RyaW5nKToKKyAgICAgICAgKiB3YXNtL1dhc21NZW1v
cnlNb2RlLmg6CisgICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6
Oldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFz
c2VtYmx5SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6
OnRyeUNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6YnVmZmVyKToKKyAgICAgICAgKEpT
Qzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6Z3Jvd1N1Y2Nlc3NDYWxsYmFjayk6CisgICAgICAgICog
d2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5Lmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3Nl
bWJseUZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlGdW5jdGlvbjo6anND
YWxsRW50cnlwb2ludFNsb3cpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkOjpldmFsdWF0ZSk6CisKIDIwMjAtMTEtMTQgIERvbiBPbG1zdGVhZCAgPGRvbi5v
bG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbY2xhbmctdGlkeV0gUnVuIG1vZGVybml6ZS11
c2Utb3ZlcnJpZGUgdGhyb3VnaCBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5MGU3MTgzZDg2MzdjNDE0MDZm
YWU2MzNiMTJhZTllM2UxMDU4ZjM2Li4yZWMxNGU3NGE2NzgyNjA3MWM0MTFlZjVhZGUwNTA0NTFj
ZmQ1NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAzIEBACisyMDIwLTExLTE0ICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IFdl
YkFzc2VtYmx5Lk1lbW9yeSB3aXRoIHNoYXJlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW4gV2ViQ29yZSwgd2UgbmVlZCB0aHJlZSB0aGluZ3MuCisK
KyAgICAgICAgMS4gU2hhcmVkIFdlYkFzc2VtYmx5Lk1lbW9yeSBzZXJpYWxpemF0aW9uL2Rlc2Vy
aWFsaXphdGlvbgorCisgICAgICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc3RydWN0dXJlLWNsb25p
bmcgZm9yIFdlYkFzc2VtYmx5Lk1lbW9yeSB0byBwYXNzIGl0IHRvIHRoZSBvdGhlciB3b3JrZXJz
LiBDbG9uaW5nIGlzIGF2YWlsYWJsZQorICAgICAgICAgICAgb25seSB3aGVuIHRoZSBXZWJBc3Nl
bWJseS5NZW1vcnkgaXMgc2hhcmVkIG1vZGUuIEFuZCBpdCBpcyBvbmx5IGF2YWlsYWJsZSB3aGVu
IHdlIGFyZSB1c2luZyBpdCBpbiBwb3N0TWVzc2FnZS4KKyAgICAgICAgICAgIFNvIHdlIGNhbm5v
dCBzdG9yZSBXZWJBc3NlbWJseS5NZW1vcnkgaW4gSW5kZXhlZERCLgorCisgICAgICAgIDIuIFdl
YkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcjo6aXNBdG9taWNzV2FpdEFsbG93ZWRPbkN1cnJlbnRU
aHJlYWQKKworICAgICAgICAgICAgQXRvbWljcy53YWl0IGlzIHVzYWJsZSBvbmx5IGluIFdvcmtl
cnMsIGFuZCAqbm90KiB1c2FibGUgaW4gU2VydmljZSBXb3JrZXJzLiBXaGVuIGNyZWF0aW5nIFZN
LCB3ZSBwYXNzIFdvcmtlclRocmVhZFR5cGUKKyAgICAgICAgICAgIGFuZCBtYWtlIFdlYkNvcmVU
eXBlZEFycmF5Q29udHJvbGxlcjo6aXNBdG9taWNzV2FpdEFsbG93ZWRPbkN1cnJlbnRUaHJlYWQg
cmV0dXJuIGFwcHJvcHJpYXRlIHZhbHVlLgorCisgICAgICAgIDMuIFtBbGxvd1NoYXJlZF0gc3Vw
cG9ydCBmb3IgV1BUCisKKyAgICAgICAgICAgIFdQVCB0ZXN0cyBmb3IgdGhpcyBhcmUgYnJva2Vu
LCBhbmQgdGVzdHMgYXJlIHNheWluZyAiUEFTUyIgd2hpbGUgdGhlIGZlYXR1cmUgaXMgbm90IGlt
cGxlbWVudGVkIGF0IGFsbC4KKyAgICAgICAgICAgIE5vdywgdGhlIGZlYXR1cmUgaXMgYWN0dWFs
bHkgaW1wbGVtZW50ZWQsIGFuZCBXUFQgdGVzdHMgc3RhcnQgc2hvd2luZyB0aGF0IFtBbGxvd1No
YXJlZF0gYW5ub3RhdGlvbiBpbiBJREwKKyAgICAgICAgICAgIGlzIG5vdCBpbXBsZW1lbnRlZC4g
W0FsbG93U2hhcmVkXSBpcyB0aGF0LCB1c3VhbGx5LCBET00gZG9lcyBub3QgYWNjZXB0IFR5cGVk
QXJyYXkgb3JpZ2luYXRlZCBmcm9tIFNoYXJlZEFycmF5QnVmZmVyLgorICAgICAgICAgICAgZS5n
LiBlbmNvZGVJbnRvKC4uLiwgVWludDhBcnJheSkgRE9NIElETCB0aHJvd3MgYW4gZXJyb3IgaWYg
VWludDhBcnJheSBpcyBiYWNrZWQgYnkgU2hhcmVkQXJyYXlCdWZmZXIuCisgICAgICAgICAgICBC
dXQgaW4gdGhlIGxpbWl0ZWQgcGxhY2VzLCB3ZSBhcmUgZXhwbGljaXRseSBhbGxvd2luZyB0aGlz
LiBUaGlzIGlzIFtBbGxvd1NoYXJlZF0gYW5ub3RhdGlvbi4KKyAgICAgICAgICAgIFRoaXMgcGF0
Y2ggaW1wbGVtZW50cyB0aGF0IHNvIHRoYXQgd2Uga2VlcCBwYXNzaW5nIFRleHRFbmNvZGVyIC8g
VGV4dERlY29kZXIgdGVzdHMuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcmlhbGl6YXRpb25Db250ZXh0Ojppbml0
aWFsaXplVk0pOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBiaW5kaW5ncy9JRExUeXBlcy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0Nv
bW1vblZNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbW1vblZNU2xvdyk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01Db252ZXJ0QnVmZmVyU291cmNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjo6Y29udmVydCk6CisgICAgICAgIChXZWJD
b3JlOjpDb252ZXJ0ZXI8SURMQXJyYXlCdWZmZXI+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnZlcnRlcjxJRExEYXRhVmlldz46OmNvbnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udmVydGVyPElETEludDhBcnJheT46OmNvbnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dmVydGVyPElETEludDE2QXJyYXk+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZl
cnRlcjxJRExJbnQzMkFycmF5Pjo6Y29udmVydCk6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0
ZXI8SURMVWludDhBcnJheT46OmNvbnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udmVydGVy
PElETFVpbnQxNkFycmF5Pjo6Y29udmVydCk6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8
SURMVWludDMyQXJyYXk+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJ
RExVaW50OENsYW1wZWRBcnJheT46OmNvbnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udmVy
dGVyPElETEZsb2F0MzJBcnJheT46OmNvbnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udmVy
dGVyPElETEZsb2F0NjRBcnJheT46OmNvbnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udmVy
dGVyPElETEFycmF5QnVmZmVyVmlldz46OmNvbnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dmVydGVyPElETEFsbG93U2hhcmVkQWRhcHRvcjxUPj46OmNvbnZlcnQpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NQ29udmVydFVuaW9uLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXpl
cjo6c2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6Q2xvbmVT
ZXJpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcElmVGVy
bWluYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpDbG9uZURlc2VyaWFsaXpl
cik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y29tcHV0
ZU1lbW9yeUNvc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpk
ZXNlcmlhbGl6ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmg6CisgICAgICAgICogYmluZGluZ3Mv
anMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcjo6V2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcjo6aXNBdG9taWNz
V2FpdEFsbG93ZWRPbkN1cnJlbnRUaHJlYWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNv
cmVUeXBlZEFycmF5Q29udHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoSXNBbm5vdGF0ZWRUeXBlKToKKyAgICAgICAgKEdl
dEFubm90YXRlZElETFR5cGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmli
dXRlcy5qc29uOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqRE9NQ29uc3RydWN0b3I6OmNvbnN0cnVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9lbmNvZGVJ
bnRvQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBk
b20vVGV4dERlY29kZXIuaWRsOgorICAgICAgICAqIGRvbS9UZXh0RGVjb2RlclN0cmVhbURlY29k
ZXIuaWRsOgorICAgICAgICAqIGRvbS9UZXh0RW5jb2Rlci5pZGw6CisgICAgICAgICogd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUpOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZTo6V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck9yV29y
a2xldFNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcjo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcik6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmg6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWRUeXBlLmg6IEFkZGVkLgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpOgor
ICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZSk6CisKIDIwMjAtMTEt
MTQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgW0xG
QyBEaXNwbGF5XSBJbXBsZW1lbnQgcHJvcGFnYXRpb24gYmFja2dyb3VuZCBzdHlsZSBmcm9tIGJv
ZHkgdG8gcm9vdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDM4YWU2Y2Ux
MWE4OWJiMmNhNjU3YzU4Y2Y4MmQ3ZTQ3NTE4YTk5NTEuLjA1MzNhODFmZDk2MTM3YmU5NjA3YzY3
ZjIzZTIwMzE5Y2Y0MDE2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTEwODgsNiArMTA4OCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUFERVJTCiAgICAgd2FzbS9XYXNtVGllclVwQ291bnQuaAogCiAgICAgd2FzbS9qcy9KU1dlYkFz
c2VtYmx5LmgKKyAgICB3YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuaAogICAgIHdhc20vanMv
SlNXZWJBc3NlbWJseU1vZHVsZS5oCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBjMGVlZjBiYzMwZTAyY2Q4NzZjOTMxMmQ3MWVkNmUwMTI3ZDNlNDU4Li5iYzAzYzc4Y2IxMTgx
ZmYyMjM5YWUxYjExZDNmNDRjOGVhNGZkODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTU3NCw3ICsxNTc0LDcgQEAKIAkJQUQwMDY1OUUxRUNBQzgxMjAwMENBOTI2IC8qIFdh
c21MaW1pdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFEMDA2NTlEMUVDQUM3RkUwMDBDQTkyNiAvKiBXYXNtTGltaXRzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQUQyRkNCRTMxREI1OERBRDAwQjNF
NzM2IC8qIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkE3MURCNThEQTQwMEIzRTczNiAvKiBKU1dl
YkFzc2VtYmx5Q29tcGlsZUVycm9yLmggKi87IH07CiAJCUFEMkZDQkU1MURCNThEQUQwMEIzRTcz
NiAvKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkE5MURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UuaCAqLzsgfTsKLQkJQUQyRkNCRTcxREI1OERBRDAwQjNFNzM2IC8qIEpTV2Vi
QXNzZW1ibHlNZW1vcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEFEMkZDQkFCMURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5TWVtb3J5Lmgg
Ki87IH07CisJCUFEMkZDQkU3MURCNThEQUQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5TWVtb3J5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JB
QjFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1lbW9yeS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFEMkZDQkU5MURCNThEQUQwMEIz
RTczNiAvKiBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JBRDFEQjU4REE0MDBCM0U3MzYgLyogSlNX
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oICovOyB9OwogCQlBRDJGQ0JFQjFEQjU4REFEMDBCM0U3
MzYgLyogSlNXZWJBc3NlbWJseVRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JBRjFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJs
eVRhYmxlLmggKi87IH07CiAJCUFEMkZDQkVEMURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJs
eUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JCMTFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JDb25zdHJ1Y3Rvci5oICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50UENSYW5nZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFBDUmFuZ2VzLmgKaW5kZXggNDRmNGVmOTEwM2Q3ZTIxNjI5NTlkZmE1NjgyZWE2
Y2IxYjUyODcxMy4uNjRiMmRlODkyNGU4NzFkOTRmYmFjZGEyZmQxMGQ4ODI3YWIyMGMwNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50UENSYW5nZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRQQ1Jhbmdlcy5oCkBAIC0zNSw2ICsz
NSwxMCBAQCBuYW1lc3BhY2UgTExJbnQgewogZXh0ZXJuICJDIiB7CiAgICAgdm9pZCBsbGludFBD
UmFuZ2VTdGFydCgpOwogICAgIHZvaWQgbGxpbnRQQ1JhbmdlRW5kKCk7CisjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQorICAgIHZvaWQgd2FzbUxMSW50UENSYW5nZVN0YXJ0KCk7CisgICAgdm9pZCB3
YXNtTExJbnRQQ1JhbmdlRW5kKCk7CisjZW5kaWYKIH0KIAogQUxXQVlTX0lOTElORSBib29sIGlz
TExJbnRQQyh2b2lkKiBwYykKQEAgLTQ2LDYgKzUwLDE3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBp
c0xMSW50UEModm9pZCogcGMpCiAgICAgcmV0dXJuIGxsaW50U3RhcnQgPD0gcGNBc0ludCAmJiBw
Y0FzSW50IDw9IGxsaW50RW5kOwogfQogCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorQUxXQVlT
X0lOTElORSBib29sIGlzV2FzbUxMSW50UEModm9pZCogcGMpCit7CisgICAgdWludHB0cl90IHBj
QXNJbnQgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihwYyk7CisgICAgdWludHB0cl90IHN0YXJ0
ID0gdW50YWdDb2RlUHRyPHVpbnRwdHJfdCwgQ0Z1bmN0aW9uUHRyVGFnPih3YXNtTExJbnRQQ1Jh
bmdlU3RhcnQpOworICAgIHVpbnRwdHJfdCBlbmQgPSB1bnRhZ0NvZGVQdHI8dWludHB0cl90LCBD
RnVuY3Rpb25QdHJUYWc+KHdhc21MTEludFBDUmFuZ2VFbmQpOworICAgIFJFTEVBU0VfQVNTRVJU
KHN0YXJ0IDwgZW5kKTsKKyAgICByZXR1cm4gc3RhcnQgPD0gcGNBc0ludCAmJiBwY0FzSW50IDw9
IGVuZDsKK30KKyNlbmRpZgorCiAjaWYgIUVOQUJMRShDX0xPT1ApCiBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyBMTEludFBDID0gR1BSSW5mbzo6cmVnVDQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCA4M2Uy
NGEwODIxMGI5NWViODcwMDNiY2VlMTY4M2EwOThhOGY0ODY3Li5iZWQ1Y2RmNWUyYTkzNDIyNzQy
MTg3ZDAzM2JhZGYwZjM1YWUwNGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0yNDY3LDcgKzI0NjcsMTIgQEAgbWFj
cm8gd2FzbVNjb3BlKCkKICAgICAjIGJ1dCB3ZSBkb24ndCB3YW50IHRvIGludGVyZmVyZSB3aXRo
IHRoZSBMTEludCBvcGNvZGVzCiAgICAgaW5jbHVkZSBXZWJBc3NlbWJseQogZW5kCisKK2dsb2Jh
bCBfd2FzbUxMSW50UENSYW5nZVN0YXJ0Citfd2FzbUxMSW50UENSYW5nZVN0YXJ0Ogogd2FzbVNj
b3BlKCkKK2dsb2JhbCBfd2FzbUxMSW50UENSYW5nZUVuZAorX3dhc21MTEludFBDUmFuZ2VFbmQ6
CiAKIGVsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFz
c2VtYmx5LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20K
aW5kZXggOGJmZmM4YTY5N2QyZTZlNGYyMGRlOTY0MDVhNWYzZDI0ZjhhMWViYy4uZGY4YmJmYTFk
NDc0MDRiNzA3YjdkY2RmYzliZDNmZjZmZTMyOTFhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCkBAIC00NSw3ICs0NSw3IEBAIGNvbnN0IE51bWJlck9m
V2FzbUFyZ3VtZW50cyA9IE51bWJlck9mV2FzbUFyZ3VtZW50R1BScyArIE51bWJlck9mV2FzbUFy
Z3VtZW50RlBSCiAjIFRoZXNlIG11c3QgbWF0Y2ggdGhlIGRlZmluaXRpb24gaW4gV2FzbU1lbW9y
eUluZm9ybWF0aW9uLmNwcAogY29uc3Qgd2FzbUluc3RhbmNlID0gY3NyMAogY29uc3QgbWVtb3J5
QmFzZSA9IGNzcjMKLWNvbnN0IG1lbW9yeVNpemUgPSBjc3I0Citjb25zdCBib3VuZHNDaGVja2lu
Z1NpemUgPSBjc3I0CiAKICMgVGhpcyBtdXN0IG1hdGNoIHRoZSBkZWZpbml0aW9uIGluIExvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCiBpZiBYODZfNjQKQEAgLTE4Nyw3ICsxODcsNyBAQCBlbmQKICMg
V2FzbSBzcGVjaWZpYyBoZWxwZXJzCiAKIG1hY3JvIHByZXNlcnZlQ2FsbGVlU2F2ZXNVc2VkQnlX
YXNtKCkKLSAgICAjIE5PVEU6IFdlIGludGVudGlvbmFsbHkgZG9uJ3Qgc2F2ZSBtZW1vcnlCYXNl
IGFuZCBtZW1vcnlTaXplIGhlcmUuIFNlZSB0aGUgY29tbWVudAorICAgICMgTk9URTogV2UgaW50
ZW50aW9uYWxseSBkb24ndCBzYXZlIG1lbW9yeUJhc2UgYW5kIGJvdW5kc0NoZWNraW5nU2l6ZSBo
ZXJlLiBTZWUgdGhlIGNvbW1lbnQKICAgICAjIGluIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdh
c20oKSBiZWxvdyBmb3Igd2h5LgogICAgIHN1YnAgQ2FsbGVlU2F2ZVNwYWNlU3RhY2tBbGlnbmVk
LCBzcAogICAgIGlmIEFSTTY0IG9yIEFSTTY0RQpAQCAtMjAxLDcgKzIwMSw3IEBAIG1hY3JvIHBy
ZXNlcnZlQ2FsbGVlU2F2ZXNVc2VkQnlXYXNtKCkKIGVuZAogCiBtYWNybyByZXN0b3JlQ2FsbGVl
U2F2ZXNVc2VkQnlXYXNtKCkKLSAgICAjIE5PVEU6IFdlIGludGVudGlvbmFsbHkgZG9uJ3QgcmVz
dG9yZSBtZW1vcnlCYXNlIGFuZCBtZW1vcnlTaXplIGhlcmUuIFRoZXNlIGFyZSBzYXZlZAorICAg
ICMgTk9URTogV2UgaW50ZW50aW9uYWxseSBkb24ndCByZXN0b3JlIG1lbW9yeUJhc2UgYW5kIGJv
dW5kc0NoZWNraW5nU2l6ZSBoZXJlLiBUaGVzZSBhcmUgc2F2ZWQKICAgICAjIGFuZCByZXN0b3Jl
ZCB3aGVuIGVudGVyaW5nIFdhc20gYnkgdGhlIEpTVG9XYXNtIHdyYXBwZXIgYW5kIGNoYW5nZXMg
dG8gdGhlbSBhcmUgbWVhbnQKICAgICAjIHRvIGJlIG9ic2VydmFibGUgd2l0aGluIHRoZSBzYW1l
IFdhc20gbW9kdWxlLgogICAgIGlmIEFSTTY0IG9yIEFSTTY0RQpAQCAtMjQwLDggKzI0MCw4IEBA
IGVuZAogCiBtYWNybyByZWxvYWRNZW1vcnlSZWdpc3RlcnNGcm9tSW5zdGFuY2UoaW5zdGFuY2Us
IHNjcmF0Y2gxLCBzY3JhdGNoMikKICAgICBsb2FkcCBXYXNtOjpJbnN0YW5jZTo6bV9jYWNoZWRN
ZW1vcnlbaW5zdGFuY2VdLCBtZW1vcnlCYXNlCi0gICAgbG9hZGkgV2FzbTo6SW5zdGFuY2U6Om1f
Y2FjaGVkTWVtb3J5U2l6ZVtpbnN0YW5jZV0sIG1lbW9yeVNpemUKLSAgICBjYWdlZFByaW1pdGl2
ZShtZW1vcnlCYXNlLCBtZW1vcnlTaXplLCBzY3JhdGNoMSwgc2NyYXRjaDIpCisgICAgbG9hZGkg
V2FzbTo6SW5zdGFuY2U6Om1fY2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplW2luc3RhbmNlXSwgYm91
bmRzQ2hlY2tpbmdTaXplCisgICAgY2FnZWRQcmltaXRpdmUobWVtb3J5QmFzZSwgYm91bmRzQ2hl
Y2tpbmdTaXplLCBzY3JhdGNoMSwgc2NyYXRjaDIpCiBlbmQKIAogbWFjcm8gdGhyb3dFeGNlcHRp
b24oZXhjZXB0aW9uKQpAQCAtODU2LDcgKzg1Niw5IEBAIHdhc21PcChjYWxsX2luZGlyZWN0X25v
X3RscywgV2FzbUNhbGxJbmRpcmVjdE5vVGxzLCBtYWNybyhjdHgpCiBlbmQpCiAKIHdhc21PcChj
dXJyZW50X21lbW9yeSwgV2FzbUN1cnJlbnRNZW1vcnksIG1hY3JvKGN0eCkKLSAgICBsb2FkcCBX
YXNtOjpJbnN0YW5jZTo6bV9jYWNoZWRNZW1vcnlTaXplW3dhc21JbnN0YW5jZV0sIHQwCisgICAg
bG9hZHAgV2FzbTo6SW5zdGFuY2U6Om1fbWVtb3J5W3dhc21JbnN0YW5jZV0sIHQwCisgICAgbG9h
ZHAgV2FzbTo6TWVtb3J5OjptX2hhbmRsZVt0MF0sIHQwCisgICAgbG9hZHAgV2FzbTo6TWVtb3J5
SGFuZGxlOjptX3NpemVbdDBdLCB0MAogICAgIHVyc2hpZnRxIDE2LCB0MAogICAgIHJldHVybnEo
Y3R4LCB0MCkKIGVuZCkKQEAgLTg3NCw3ICs4NzYsNyBAQCBlbmQpCiAjIHVzZXMgb2Zmc2V0IGFz
IHNjcmF0Y2ggYW5kIHJldHVybnMgcmVzdWx0IG9uIHBvaW50ZXIKIG1hY3JvIGVtaXRDaGVja0Fu
ZFByZXBhcmVQb2ludGVyKGN0eCwgcG9pbnRlciwgb2Zmc2V0LCBzaXplKQogICAgIGxlYXAgc2l6
ZSAtIDFbcG9pbnRlciwgb2Zmc2V0XSwgdDUKLSAgICBicGIgdDUsIG1lbW9yeVNpemUsIC5jb250
aW51YXRpb24KKyAgICBicGIgdDUsIGJvdW5kc0NoZWNraW5nU2l6ZSwgLmNvbnRpbnVhdGlvbgog
ICAgIHRocm93RXhjZXB0aW9uKE91dE9mQm91bmRzTWVtb3J5QWNjZXNzKQogLmNvbnRpbnVhdGlv
bjoKICAgICBhZGRwIG1lbW9yeUJhc2UsIHBvaW50ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAppbmRleCA2YmVhNGNmZjE0OTFmOTk0YWJjM2U4MDU2
ZTZiNDNjNDMxNTI1ZGNmLi5hZTRjZjYxYTU1OTI4Y2FmZTk1MjlmYjI3ZTFlMDk3ZDEyMGI5Y2E5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oCkBA
IC01NSw2ICs1NSw3IEBAIGNsYXNzIEpTQXJyYXlCdWZmZXIgZmluYWwgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CiAgICAgCiAgICAgLy8gVGhpcyBpcyB0aGUgZGVmYXVsdCBET00gdW53cmFw
cGluZy4gSXQgY2FsbHMgdG9VbnNoYXJlZEFycmF5QnVmZmVyKCkuCiAgICAgc3RhdGljIEFycmF5
QnVmZmVyKiB0b1dyYXBwZWQoVk0mLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgQXJyYXlCdWZmZXIq
IHRvV3JhcHBlZEFsbG93U2hhcmVkKFZNJiwgSlNWYWx1ZSk7CiAgICAgCiBwcml2YXRlOgogICAg
IEpTQXJyYXlCdWZmZXIoVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOwpA
QCAtODYsNCArODcsOSBAQCBpbmxpbmUgQXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZmZXI6OnRvV3Jh
cHBlZChWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIHRvVW5zaGFyZWRBcnJheUJ1
ZmZlcih2bSwgdmFsdWUpOwogfQogCitpbmxpbmUgQXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZmZXI6
OnRvV3JhcHBlZEFsbG93U2hhcmVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1
cm4gdG9Qb3NzaWJseVNoYXJlZEFycmF5QnVmZmVyKHZtLCB2YWx1ZSk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlC
dWZmZXJWaWV3LmgKaW5kZXggYjg3ZTkxY2IxMmYwMDRkYmE0MjQ4OWRiZjU0MTM0Y2MxNjc3ZTlj
OC4uZjRlMzZjMDNhZWEwZGVhY2NhNjRlZmY1NmNlZTE5MmEwY2ZjODlkYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCkBAIC0yMDMs
NiArMjAzLDcgQEAgY2xhc3MgSlNBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk1vZGUoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoSlNBcnJheUJ1ZmZlclZpZXcsIG1fbW9kZSk7IH0KICAgICAKICAgICBzdGF0
aWMgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gdG9XcmFwcGVkKFZNJiwgSlNWYWx1ZSk7CisgICAg
c3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IHRvV3JhcHBlZEFsbG93U2hhcmVkKFZNJiwg
SlNWYWx1ZSk7CiAKIHByaXZhdGU6CiAgICAgZW51bSBSZXF1ZXN0ZXIgeyBNdXRhdG9yLCBDb25j
dXJyZW50VGhyZWFkIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oCmluZGV4IDRmZDdlZWY2NmJkYzI4MjBiNDBl
ZjU0ZmRlNjg5YTZmNjU0NjBkMTUuLjk4NGY5YTIwYjdjNWYzMDlhYjk5OTllMDZmNGYwMTIwNzg2
ZGEwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlC
dWZmZXJWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oCkBAIC0xMjksNCArMTI5LDEyIEBAIGlubGluZSBSZWZQ
dHI8QXJyYXlCdWZmZXJWaWV3PiBKU0FycmF5QnVmZmVyVmlldzo6dG9XcmFwcGVkKFZNJiB2bSwg
SlNWYWx1ZSB2YWx1CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2lubGluZSBSZWZQdHI8QXJy
YXlCdWZmZXJWaWV3PiBKU0FycmF5QnVmZmVyVmlldzo6dG9XcmFwcGVkQWxsb3dTaGFyZWQoVk0m
IHZtLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmIChKU0FycmF5QnVmZmVyVmlldyogdmlldyA9
IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPih2bSwgdmFsdWUpKQorICAgICAgICBy
ZXR1cm4gdmlldy0+cG9zc2libHlTaGFyZWRJbXBsKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCBlOGMzMWQ4MDcwMDk3
Nzk1YTRkMDRiMDQzZTMyOWE0NmI2MzgyMzk3Li5jZWI0ODUxYWNhMmM3ZTFkMjE0NTA1MzQ4NmJh
NTIwYjU4NGM0YzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTI4Nyw2ICsyODcsOCBAQCBjbGFzcyBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldyBmaW5hbCA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7
CiAKICAgICAvLyBUaGlzIGlzIHRoZSBkZWZhdWx0IERPTSB1bndyYXBwaW5nLiBJdCBjYWxscyB0
b1Vuc2hhcmVkTmF0aXZlVHlwZWRWaWV3KCkuCiAgICAgc3RhdGljIFJlZlB0cjx0eXBlbmFtZSBB
ZGFwdG9yOjpWaWV3VHlwZT4gdG9XcmFwcGVkKFZNJiwgSlNWYWx1ZSk7CisgICAgLy8gW0FsbG93
U2hhcmVkXSBhbm5vdGF0aW9uIGFsbG93cyBhY2NlcHRpbmcgVHlwZWRBcnJheSBvcmlnaW5hdGVk
IGZyb20gU2hhcmVkQXJyYXlCdWZmZXIuCisgICAgc3RhdGljIFJlZlB0cjx0eXBlbmFtZSBBZGFw
dG9yOjpWaWV3VHlwZT4gdG9XcmFwcGVkQWxsb3dTaGFyZWQoVk0mLCBKU1ZhbHVlKTsKICAgICAK
IHByaXZhdGU6CiAgICAgZnJpZW5kIHN0cnVjdCBUeXBlZEFycmF5Q2xhc3NJbmZvczsKQEAgLTM5
Miw0ICszOTQsMTEgQEAgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dG9XcmFwcGVkKFYKICAgICByZXR1cm4gSlNDOjp0
b1Vuc2hhcmVkTmF0aXZlVHlwZWRWaWV3PEFkYXB0b3I+KHZtLCB2YWx1ZSk7CiB9CiAKK3RlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+CitSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0b1dyYXBwZWRBbGxvd1NoYXJlZChW
TSYgdm0sIEpTVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIEpTQzo6dG9Qb3NzaWJseVNoYXJl
ZE5hdGl2ZVR5cGVkVmlldzxBZGFwdG9yPih2bSwgdmFsdWUpOworfQorCisKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAppbmRleCA5
NTg5ODljOTIzYTRmYWNiZjY1NzVjZGRmOWYxMmVkNWVhZTE4ZjI4Li5jMjdiMTU2YjE5YjAwZjQ5
YmM2ZTBiOThmMDg0NmFiMDYyMzgwZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmNwcApAQCAtMzY3LDYgKzM2Nyw3IEBAIHN0YXRpYyB2b2lkIG92ZXJyaWRlRGVm
YXVsdHMoKQogCiAjaWYgIUVOQUJMRShXRUJBU1NFTUJMWV9GQVNUX01FTU9SWSkKICAgICBPcHRp
b25zOjp1c2VXZWJBc3NlbWJseUZhc3RNZW1vcnkoKSA9IGZhbHNlOworICAgIE9wdGlvbnM6OnVz
ZVNoYXJlZEFycmF5QnVmZmVyKCkgPSBmYWxzZTsKICNlbmRpZgogCiAjaWYgIUhBVkUoTUFDSF9F
WENFUFRJT05TKQpAQCAtNjU5LDEzICs2NjAsMTQgQEAgdm9pZCBPcHRpb25zOjppbml0aWFsaXpl
KCkKICNlbmRpZgogCiAjaWYgQVNBTl9FTkFCTEVEICYmIE9TKExJTlVYKSAmJiBFTkFCTEUoV0VC
QVNTRU1CTFlfRkFTVF9NRU1PUlkpCi0gICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNz
ZW1ibHlGYXN0TWVtb3J5KCkpIHsKKyAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3Nl
bWJseUZhc3RNZW1vcnkoKSB8fCBPcHRpb25zOjp1c2VTaGFyZWRBcnJheUJ1ZmZlcigpKSB7CiAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogYXNhbk9wdGlvbnMgPSBnZXRlbnYoIkFTQU5fT1BU
SU9OUyIpOwogICAgICAgICAgICAgICAgIGJvb2wgb2tUb1VzZVdlYkFzc2VtYmx5RmFzdE1lbW9y
eSA9IGFzYW5PcHRpb25zCiAgICAgICAgICAgICAgICAgICAgICYmIChzdHJzdHIoYXNhbk9wdGlv
bnMsICJhbGxvd191c2VyX3NlZ3ZfaGFuZGxlcj0xIikgfHwgc3Ryc3RyKGFzYW5PcHRpb25zLCAi
aGFuZGxlX3NlZ3Y9MCIpKTsKICAgICAgICAgICAgICAgICBpZiAoIW9rVG9Vc2VXZWJBc3NlbWJs
eUZhc3RNZW1vcnkpIHsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJXQVJOSU5HOiBB
U0FOIGludGVyZmVyZXMgd2l0aCBKU0Mgc2lnbmFsIGhhbmRsZXJzOyB1c2VXZWJBc3NlbWJseUZh
c3RNZW1vcnkgd2lsbCBiZSBkaXNhYmxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxv
Z0xuKCJXQVJOSU5HOiBBU0FOIGludGVyZmVyZXMgd2l0aCBKU0Mgc2lnbmFsIGhhbmRsZXJzOyB1
c2VXZWJBc3NlbWJseUZhc3RNZW1vcnkgYW5kIHVzZVNoYXJlZEFycmF5QnVmZmVyIHdpbGwgYmUg
ZGlzYWJsZWQuIik7CiAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5
RmFzdE1lbW9yeSgpID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIE9wdGlvbnM6OnVzZVNo
YXJlZEFycmF5QnVmZmVyKCkgPSBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21B
aXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJH
ZW5lcmF0b3IuY3BwCmluZGV4IDQzZDBjODcyZWU0YzYzYjRkNTZiNmYwZTM0NjIzNTMzM2U4NGI3
OTMuLmYwMzdkYTEzMzlkMzdjMmJiYWUzYTllYjhjZjMwNjU0ZjEyMjIzNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcApAQCAtNjgw
LDcgKzY4MCw3IEBAIGNsYXNzIEFpcklSR2VuZXJhdG9yIHsKICAgICBWZWN0b3I8VHlwZWRUbXA+
IG1fbG9jYWxzOwogICAgIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgbV91bmxpbmtl
ZFdhc21Ub1dhc21DYWxsczsgLy8gTGlzdCBlYWNoIGNhbGwgc2l0ZSBhbmQgdGhlIGZ1bmN0aW9u
IGluZGV4IHdob3NlIGFkZHJlc3MgaXQgc2hvdWxkIGJlIHBhdGNoZWQgd2l0aC4KICAgICBHUFJS
ZWcgbV9tZW1vcnlCYXNlR1BSIHsgSW52YWxpZEdQUlJlZyB9OwotICAgIEdQUlJlZyBtX21lbW9y
eVNpemVHUFIgeyBJbnZhbGlkR1BSUmVnIH07CisgICAgR1BSUmVnIG1fYm91bmRzQ2hlY2tpbmdT
aXplR1BSIHsgSW52YWxpZEdQUlJlZyB9OwogICAgIEdQUlJlZyBtX3dhc21Db250ZXh0SW5zdGFu
Y2VHUFIgeyBJbnZhbGlkR1BSUmVnIH07CiAgICAgYm9vbCBtX21ha2VzQ2FsbHMgeyBmYWxzZSB9
OwogCkBAIC03NzIsOCArNzcyLDggQEAgQWlySVJHZW5lcmF0b3I6OkFpcklSR2VuZXJhdG9yKGNv
bnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBCMzo6UHJvY2VkdXJlJiBwcm8KICAgICAgICAg
bV9jb2RlLnBpblJlZ2lzdGVyKG1fd2FzbUNvbnRleHRJbnN0YW5jZUdQUik7CiAKICAgICBpZiAo
bW9kZSAhPSBNZW1vcnlNb2RlOjpTaWduYWxpbmcpIHsKLSAgICAgICAgbV9tZW1vcnlTaXplR1BS
ID0gcGlubmVkUmVncy5zaXplUmVnaXN0ZXI7Ci0gICAgICAgIG1fY29kZS5waW5SZWdpc3Rlciht
X21lbW9yeVNpemVHUFIpOworICAgICAgICBtX2JvdW5kc0NoZWNraW5nU2l6ZUdQUiA9IHBpbm5l
ZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXI7CisgICAgICAgIG1fY29kZS5waW5SZWdp
c3RlcihtX2JvdW5kc0NoZWNraW5nU2l6ZUdQUik7CiAgICAgfQogCiAgICAgbV9jb2RlLnNldE51
bUVudHJ5cG9pbnRzKDEpOwpAQCAtOTE4LDcgKzkxOCw3IEBAIHZvaWQgQWlySVJHZW5lcmF0b3I6
OnJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0IHJl
c3RvCiAgICAgICAgIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyogcGlubmVkUmVncyA9ICZQaW5u
ZWRSZWdpc3RlckluZm86OmdldCgpOwogICAgICAgICBSZWdpc3RlclNldCBjbG9iYmVyczsKICAg
ICAgICAgY2xvYmJlcnMuc2V0KHBpbm5lZFJlZ3MtPmJhc2VNZW1vcnlQb2ludGVyKTsKLSAgICAg
ICAgY2xvYmJlcnMuc2V0KHBpbm5lZFJlZ3MtPnNpemVSZWdpc3Rlcik7CisgICAgICAgIGNsb2Ji
ZXJzLnNldChwaW5uZWRSZWdzLT5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7CiAgICAgICAg
IGlmICghaXNBUk02NCgpKQogICAgICAgICAgICAgY2xvYmJlcnMuc2V0KFJlZ2lzdGVyU2V0Ojpt
YWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAKQEAgLTkzMywxMiArOTMzLDEyIEBAIHZvaWQgQWly
SVJHZW5lcmF0b3I6OnJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRT
dGFja0xpbWl0IHJlc3RvCiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbcGlubmVk
UmVnc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlu
bmVkUmVncy0+YmFzZU1lbW9yeVBvaW50ZXI7Ci0gICAgICAgICAgICBHUFJSZWcgc2NyYXRjaE9y
U2l6ZSA9IEdpZ2FjYWdlOjppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyBwYXJhbXMu
Z3BTY3JhdGNoKDApIDogcGlubmVkUmVncy0+c2l6ZVJlZ2lzdGVyOworICAgICAgICAgICAgR1BS
UmVnIHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSA9IEdpZ2FjYWdlOjppc0VuYWJsZWQoR2ln
YWNhZ2U6OlByaW1pdGl2ZSkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogcGlubmVkUmVncy0+Ym91
bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXI7CiAKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxs
SGVscGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCksIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hl
ZE1lbW9yeVNpemUoKSksIHBpbm5lZFJlZ3MtPnNpemVSZWdpc3Rlcik7CisgICAgICAgICAgICBq
aXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFyYW1zWzBdLmdwcigpLCBJbnN0YW5j
ZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSksIHBpbm5lZFJlZ3MtPmJvdW5k
c0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsKICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCksIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1l
bW9yeSgpKSwgYmFzZU1lbW9yeSk7CiAKLSAgICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxs
eShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLT5zaXplUmVnaXN0
ZXIsIHNjcmF0Y2hPclNpemUpOworICAgICAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdp
Z2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJlZ3MtPmJvdW5kc0NoZWNraW5n
U2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOwogICAgICAgICB9KTsK
IAogICAgICAgICBlbWl0UGF0Y2hwb2ludChibG9jaywgcGF0Y2hwb2ludCwgVG1wKCksIGluc3Rh
bmNlKTsKQEAgLTExNjgsOCArMTE2OCwxMiBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDdXJy
ZW50TWVtb3J5KEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKICAgICBh
dXRvIHRlbXAxID0gZzY0KCk7CiAgICAgYXV0byB0ZW1wMiA9IGc2NCgpOwogCi0gICAgUkVMRUFT
RV9BU1NFUlQoQXJnOjppc1ZhbGlkQWRkckZvcm0oSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVt
b3J5U2l6ZSgpLCBCMzo6V2lkdGg2NCkpOwotICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoaW5z
dGFuY2VWYWx1ZSgpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCB0ZW1w
MSk7CisgICAgUkVMRUFTRV9BU1NFUlQoQXJnOjppc1ZhbGlkQWRkckZvcm0oSW5zdGFuY2U6Om9m
ZnNldE9mTWVtb3J5KCksIEIzOjpXaWR0aDY0KSk7CisgICAgUkVMRUFTRV9BU1NFUlQoQXJnOjpp
c1ZhbGlkQWRkckZvcm0oTWVtb3J5OjpvZmZzZXRPZkhhbmRsZSgpLCBCMzo6V2lkdGg2NCkpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKE1lbW9yeUhhbmRsZTo6b2Zm
c2V0T2ZTaXplKCksIEIzOjpXaWR0aDY0KSk7CisgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcihp
bnN0YW5jZVZhbHVlKCksIEluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSwgdGVtcDEpOworICAg
IGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIodGVtcDEsIE1lbW9yeTo6b2Zmc2V0T2ZIYW5kbGUoKSks
IHRlbXAxKTsKKyAgICBhcHBlbmQoTW92ZSwgQXJnOjphZGRyKHRlbXAxLCBNZW1vcnlIYW5kbGU6
Om9mZnNldE9mU2l6ZSgpKSwgdGVtcDEpOwogICAgIGNvbnN0ZXhwciB1aW50MzJfdCBzaGlmdFZh
bHVlID0gMTY7CiAgICAgc3RhdGljX2Fzc2VydChQYWdlQ291bnQ6OnBhZ2VTaXplID09IDF1bGwg
PDwgc2hpZnRWYWx1ZSwgIlRoaXMgbXVzdCBob2xkIGZvciB0aGUgY29kZSBiZWxvdyB0byBiZSBj
b3JyZWN0LiIpOwogICAgIGFwcGVuZChNb3ZlLCBBcmc6OmltbSgxNiksIHRlbXAyKTsKQEAgLTEz
NjMsMTUgKzEzNjcsMTYgQEAgaW5saW5lIEFpcklSR2VuZXJhdG9yOjpFeHByZXNzaW9uVHlwZSBB
aXJJUkdlbmVyYXRvcjo6ZW1pdENoZWNrQW5kUHJlcGFyZVBvaW50ZXIKIAogICAgIHN3aXRjaCAo
bV9tb2RlKSB7CiAgICAgY2FzZSBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZzogewotICAgICAg
ICAvLyBXZSdyZSBub3QgdXNpbmcgc2lnbmFsIGhhbmRsaW5nIGF0IGFsbCwgd2UgbXVzdCB0aGVy
ZWZvcmUgY2hlY2sgdGhhdCBubyBtZW1vcnkgYWNjZXNzIGV4Y2VlZHMgdGhlIGN1cnJlbnQgbWVt
b3J5IHNpemUuCi0gICAgICAgIEFTU0VSVChtX21lbW9yeVNpemVHUFIpOworICAgICAgICAvLyBJ
biBib3VuZCBjaGVja2luZyBtb2RlLCB3aGlsZSBzaGFyZWQgd2FzbSBtZW1vcnkgcGFydGlhbGx5
IHJlbGllcyBvbiBzaWduYWwgaGFuZGxlciB0b28sIHdlIG5lZWQgdG8gcGVyZm9ybSBib3VuZCBj
aGVja2luZworICAgICAgICAvLyB0byBlbnN1cmUgdGhhdCBubyBtZW1vcnkgYWNjZXNzIGV4Y2Vl
ZHMgdGhlIGN1cnJlbnQgbWVtb3J5IHNpemUuCisgICAgICAgIEFTU0VSVChtX2JvdW5kc0NoZWNr
aW5nU2l6ZUdQUik7CiAgICAgICAgIEFTU0VSVChzaXplT2ZPcGVyYXRpb24gKyBvZmZzZXQgPiBv
ZmZzZXQpOwogICAgICAgICBhdXRvIHRlbXAgPSBnNjQoKTsKICAgICAgICAgYXBwZW5kKE1vdmUs
IEFyZzo6YmlnSW1tKHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaXplT2ZPcGVyYXRpb24pICsgb2Zm
c2V0IC0gMSksIHRlbXApOwogICAgICAgICBhcHBlbmQoQWRkNjQsIHJlc3VsdCwgdGVtcCk7CiAK
ICAgICAgICAgZW1pdENoZWNrKFsmXSB7Ci0gICAgICAgICAgICByZXR1cm4gSW5zdChCcmFuY2g2
NCwgbnVsbHB0ciwgQXJnOjpyZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwpLCB0
ZW1wLCBUbXAobV9tZW1vcnlTaXplR1BSKSk7CisgICAgICAgICAgICByZXR1cm4gSW5zdChCcmFu
Y2g2NCwgbnVsbHB0ciwgQXJnOjpyZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwp
LCB0ZW1wLCBUbXAobV9ib3VuZHNDaGVja2luZ1NpemVHUFIpKTsKICAgICAgICAgfSwgWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsK
ICAgICAgICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2VwdGlvbihqaXQsIEV4Y2VwdGlvblR5cGU6
Ok91dE9mQm91bmRzTWVtb3J5QWNjZXNzKTsKICAgICAgICAgfSk7CkBAIC0yMTU0LDcgKzIxNTks
NyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgs
IGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLAogICAgICAgICBhdXRvKiBwYXRjaHBvaW50ID0g
ZW1pdENhbGxQYXRjaHBvaW50KG1fY3VycmVudEJsb2NrLCBzaWduYXR1cmUsIHJlc3VsdHMsIGFy
Z3MpOwogICAgICAgICAvLyBXZSBuZWVkIHRvIGNsb2JiZXIgdGhlIHNpemUgcmVnaXN0ZXIgc2lu
Y2UgdGhlIExMSW50IGFsd2F5cyBib3VuZHMgY2hlY2tzCiAgICAgICAgIGlmIChtX21vZGUgPT0g
TWVtb3J5TW9kZTo6U2lnbmFsaW5nKQotICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxh
dGUoUmVnaXN0ZXJTZXQgeyBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnNpemVSZWdpc3RlciB9
KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFJlZ2lzdGVyU2V0IHsgUGlu
bmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciB9KTsKICAg
ICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFt1bmxpbmtlZFdhc21Ub1dhc21DYWxscywg
ZnVuY3Rpb25JbmRleF0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJikgewogICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNh
bGwgPSBqaXQudGhyZWFkU2FmZVBhdGNoYWJsZU5lYXJDYWxsKCk7CkBAIC0yMjc4LDEzICsyMjgz
LDEzIEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJs
ZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hCiAgICAgICAgICAgICBqaXQuc3RvcmVXYXNt
Q29udGV4dEluc3RhbmNlKG5ld0NvbnRleHRJbnN0YW5jZSk7CiAgICAgICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBtZW1vcnkgc2l6ZSByZWdpc3Rlcgog
ICAgICAgICAgICAgLy8gICBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjI5NTIKLSAgICAgICAgICAgIEFTU0VSVChwaW5uZWRSZWdzLnNpemVSZWdpc3RlciAh
PSBuZXdDb250ZXh0SW5zdGFuY2UpOwotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hPclNpemUg
PSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUpID8gcGFyYW1zLmdwU2Ny
YXRjaCgwKSA6IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyOworICAgICAgICAgICAgQVNTRVJUKHBp
bm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgIT0gbmV3Q29udGV4dEluc3RhbmNl
KTsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUgPSBHaWdh
Y2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUpID8gcGFyYW1zLmdwU2NyYXRjaCgw
KSA6IHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXI7CiAKLSAgICAgICAgICAg
IGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIElu
c3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBpbm5lZFJlZ3Muc2l6ZVJlZ2lz
dGVyKTsgLy8gTWVtb3J5IHNpemUuCisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MobmV3Q29udGV4dEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRC
b3VuZHNDaGVja2luZ1NpemUoKSksIHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0
ZXIpOyAvLyBCb3VuZCBjaGVja2luZyBzaXplLgogICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKG5ld0NvbnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9m
Q2FjaGVkTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsgLy8gTWVtb3J5Ojp2b2lkKi4KIAotICAgICAg
ICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1v
cnksIHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JTaXplKTsKKyAgICAgICAgICAg
IGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBw
aW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JCb3VuZHNDaGVj
a2luZ1NpemUpOwogICAgICAgICB9KTsKIAogICAgICAgICBlbWl0UGF0Y2hwb2ludChkb0NvbnRl
eHRTd2l0Y2gsIHBhdGNocG9pbnQsIFRtcCgpLCBuZXdDb250ZXh0SW5zdGFuY2UsIGluc3RhbmNl
VmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJ
UkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVy
YXRvci5jcHAKaW5kZXggMzBiM2M3NzIzMmYyZGVlNWY0NTkzYTRiYzg5OTU2NTdmMTM5OGRmYi4u
OTZmM2FhY2Y5NmI0MjIwMTE4ZWJjZmU4ZTFjMTg1YzJkN2YzZWNlMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMzI1LDcgKzMy
NSw3IEBAIGNsYXNzIEIzSVJHZW5lcmF0b3IgewogICAgIEluc2VydGlvblNldCBtX2NvbnN0YW50
SW5zZXJ0aW9uVmFsdWVzOwogICAgIFZhbHVlKiBtX2ZyYW1lUG9pbnRlciB7IG51bGxwdHIgfTsK
ICAgICBHUFJSZWcgbV9tZW1vcnlCYXNlR1BSIHsgSW52YWxpZEdQUlJlZyB9OwotICAgIEdQUlJl
ZyBtX21lbW9yeVNpemVHUFIgeyBJbnZhbGlkR1BSUmVnIH07CisgICAgR1BSUmVnIG1fYm91bmRz
Q2hlY2tpbmdTaXplR1BSIHsgSW52YWxpZEdQUlJlZyB9OwogICAgIEdQUlJlZyBtX3dhc21Db250
ZXh0SW5zdGFuY2VHUFIgeyBJbnZhbGlkR1BSUmVnIH07CiAgICAgYm9vbCBtX21ha2VzQ2FsbHMg
eyBmYWxzZSB9OwogCkBAIC00MDgsOCArNDA4LDggQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVy
YXRvcihjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgUHJvY2VkdXJlJiBwcm9jZWR1cmUK
ICAgICAgICAgbV9wcm9jLnBpblJlZ2lzdGVyKG1fd2FzbUNvbnRleHRJbnN0YW5jZUdQUik7CiAK
ICAgICBpZiAobW9kZSAhPSBNZW1vcnlNb2RlOjpTaWduYWxpbmcpIHsKLSAgICAgICAgbV9tZW1v
cnlTaXplR1BSID0gcGlubmVkUmVncy5zaXplUmVnaXN0ZXI7Ci0gICAgICAgIG1fcHJvYy5waW5S
ZWdpc3RlcihtX21lbW9yeVNpemVHUFIpOworICAgICAgICBtX2JvdW5kc0NoZWNraW5nU2l6ZUdQ
UiA9IHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXI7CisgICAgICAgIG1fcHJv
Yy5waW5SZWdpc3RlcihtX2JvdW5kc0NoZWNraW5nU2l6ZUdQUik7CiAgICAgfQogCiAgICAgaWYg
KGluZm8ubWVtb3J5KSB7CkBAIC00MTcsNyArNDE3LDcgQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdl
bmVyYXRvcihjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgUHJvY2VkdXJlJiBwcm9jZWR1
cmUKICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0
Y2goaml0KTsKICAgICAgICAgICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgICAgICAgICBjYXNl
IE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nOgotICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVT
RUQocGlubmVkR1BSLCBtX21lbW9yeVNpemVHUFIgPT0gcGlubmVkR1BSKTsKKyAgICAgICAgICAg
ICAgICBBU1NFUlRfVU5VU0VEKHBpbm5lZEdQUiwgbV9ib3VuZHNDaGVja2luZ1NpemVHUFIgPT0g
cGlubmVkR1BSKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgTWVt
b3J5TW9kZTo6U2lnbmFsaW5nOgogICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocGlubmVk
R1BSLCBJbnZhbGlkR1BSUmVnID09IHBpbm5lZEdQUik7CkBAIC01NDUsNyArNTQ1LDcgQEAgdm9p
ZCBCM0lSR2VuZXJhdG9yOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2Fj
aGVkU3RhY2tMaW1pdCByZXN0b3IKICAgICAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvKiBw
aW5uZWRSZWdzID0gJlBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCk7CiAgICAgICAgIFJlZ2lzdGVy
U2V0IGNsb2JiZXJzOwogICAgICAgICBjbG9iYmVycy5zZXQocGlubmVkUmVncy0+YmFzZU1lbW9y
eVBvaW50ZXIpOwotICAgICAgICBjbG9iYmVycy5zZXQocGlubmVkUmVncy0+c2l6ZVJlZ2lzdGVy
KTsKKyAgICAgICAgY2xvYmJlcnMuc2V0KHBpbm5lZFJlZ3MtPmJvdW5kc0NoZWNraW5nU2l6ZVJl
Z2lzdGVyKTsKICAgICAgICAgaWYgKCFpc0FSTTY0KCkpCiAgICAgICAgICAgICBjbG9iYmVycy5z
ZXQoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKIApAQCAtNTYxLDEyICs1
NjEsMTIgQEAgdm9pZCBCM0lSR2VuZXJhdG9yOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0
ZShSZXN0b3JlQ2FjaGVkU3RhY2tMaW1pdCByZXN0b3IKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKFtwaW5uZWRSZWdzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgR1BSUmVn
IGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLT5iYXNlTWVtb3J5UG9pbnRlcjsKLSAgICAgICAgICAg
IEdQUlJlZyBzY3JhdGNoT3JTaXplID0gR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJp
bWl0aXZlKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBwaW5uZWRSZWdzLT5zaXplUmVnaXN0ZXI7
CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplID0gR2lnYWNh
Z2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkg
OiBwaW5uZWRSZWdzLT5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlcjsKIAotICAgICAgICAgICAg
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhcmFtc1swXS5ncHIoKSwgSW5zdGFu
Y2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSwgcGlubmVkUmVncy0+c2l6ZVJlZ2lzdGVy
KTsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNb
MF0uZ3ByKCksIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpKSwg
cGlubmVkUmVncy0+Ym91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIpOwogICAgICAgICAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhcmFtc1swXS5ncHIoKSwgSW5zdGFuY2U6
Om9mZnNldE9mQ2FjaGVkTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKIAotICAgICAgICAgICAgaml0
LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5l
ZFJlZ3MtPnNpemVSZWdpc3Rlciwgc2NyYXRjaE9yU2l6ZSk7CisgICAgICAgICAgICBqaXQuY2Fn
ZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgcGlubmVkUmVn
cy0+Ym91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIsIHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6
ZSk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KQEAgLTc5Myw3ICs3OTMsOSBAQCBhdXRvIEIzSVJH
ZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJlc3Npb25U
eXBlJiByZXN1bHQpCiBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZEN1cnJlbnRNZW1vcnkoRXhwcmVz
c2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIHN0YXRpY19hc3NlcnQo
c2l6ZW9mKGRlY2x0eXBlKHN0YXRpY19jYXN0PE1lbW9yeSo+KG51bGxwdHIpLT5zaXplKCkpKSA9
PSBzaXplb2YodWludDY0X3QpLCAiY29kZWdlbiByZWxpZXMgb24gdGhpcyBzaXplIik7Ci0gICAg
VmFsdWUqIHNpemUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3By
b2MsIExvYWQsIEludDY0LCBvcmlnaW4oKSwgaW5zdGFuY2VWYWx1ZSgpLCBzYWZlQ2FzdDxpbnQz
Ml90PihJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpKTsKKyAgICBWYWx1ZSog
bWVtb3J5ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBM
b2FkLCBJbnQ2NCwgb3JpZ2luKCksIGluc3RhbmNlVmFsdWUoKSwgc2FmZUNhc3Q8aW50MzJfdD4o
SW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCkpKTsKKyAgICBWYWx1ZSogaGFuZGxlID0gbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQ2NCwgb3Jp
Z2luKCksIG1lbW9yeSwgc2FmZUNhc3Q8aW50MzJfdD4oTWVtb3J5OjpvZmZzZXRPZkhhbmRsZSgp
KSk7CisgICAgVmFsdWUqIHNpemUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihtX3Byb2MsIExvYWQsIEludDY0LCBvcmlnaW4oKSwgaGFuZGxlLCBzYWZlQ2FzdDxpbnQz
Ml90PihNZW1vcnlIYW5kbGU6Om9mZnNldE9mU2l6ZSgpKSk7CiAKICAgICBjb25zdGV4cHIgdWlu
dDMyX3Qgc2hpZnRWYWx1ZSA9IDE2OwogICAgIHN0YXRpY19hc3NlcnQoUGFnZUNvdW50OjpwYWdl
U2l6ZSA9PSAxdWxsIDw8IHNoaWZ0VmFsdWUsICJUaGlzIG11c3QgaG9sZCBmb3IgdGhlIGNvZGUg
YmVsb3cgdG8gYmUgY29ycmVjdC4iKTsKQEAgLTk1NCw5ICs5NTYsOSBAQCBpbmxpbmUgVmFsdWUq
IEIzSVJHZW5lcmF0b3I6OmVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKEV4cHJlc3Npb25UeXBl
IHBvaW50ZXIsCiAgICAgc3dpdGNoIChtX21vZGUpIHsKICAgICBjYXNlIE1lbW9yeU1vZGU6OkJv
dW5kc0NoZWNraW5nOiB7CiAgICAgICAgIC8vIFdlJ3JlIG5vdCB1c2luZyBzaWduYWwgaGFuZGxp
bmcgYXQgYWxsLCB3ZSBtdXN0IHRoZXJlZm9yZSBjaGVjayB0aGF0IG5vIG1lbW9yeSBhY2Nlc3Mg
ZXhjZWVkcyB0aGUgY3VycmVudCBtZW1vcnkgc2l6ZS4KLSAgICAgICAgQVNTRVJUKG1fbWVtb3J5
U2l6ZUdQUik7CisgICAgICAgIEFTU0VSVChtX2JvdW5kc0NoZWNraW5nU2l6ZUdQUik7CiAgICAg
ICAgIEFTU0VSVChzaXplT2ZPcGVyYXRpb24gKyBvZmZzZXQgPiBvZmZzZXQpOwotICAgICAgICBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFdhc21Cb3VuZHNDaGVja1ZhbHVlPihtX3Byb2MsIG9y
aWdpbigpLCBtX21lbW9yeVNpemVHUFIsIHBvaW50ZXIsIHNpemVPZk9wZXJhdGlvbiArIG9mZnNl
dCAtIDEpOworICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFdhc21Cb3VuZHNDaGVj
a1ZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBtX2JvdW5kc0NoZWNraW5nU2l6ZUdQUiwgcG9pbnRl
ciwgc2l6ZU9mT3BlcmF0aW9uICsgb2Zmc2V0IC0gMSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IApAQCAtMTcxMCw3ICsxNzEyLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsKHVpbnQz
Ml90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLAogCiAgICAgICAg
ICAgICAgICAgLy8gV2UgbmVlZCB0byBjbG9iYmVyIHRoZSBzaXplIHJlZ2lzdGVyIHNpbmNlIHRo
ZSBMTEludCBhbHdheXMgYm91bmRzIGNoZWNrcwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUg
PT0gTWVtb3J5TW9kZTo6U2lnbmFsaW5nKQotICAgICAgICAgICAgICAgICAgICBwYXRjaHBvaW50
LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldCB7IFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkuc2l6
ZVJlZ2lzdGVyIH0pOworICAgICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0
ZShSZWdpc3RlclNldCB7IFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkuYm91bmRzQ2hlY2tpbmdT
aXplUmVnaXN0ZXIgfSk7CiAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KFt1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgZnVuY3Rpb25JbmRleF0gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICAgICAg
ICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7
CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LnRocmVh
ZFNhZmVQYXRjaGFibGVOZWFyQ2FsbCgpOwpAQCAtMTgzMSwxNiArMTgzMywxNiBAQCBhdXRvIEIz
SVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBT
aWduYXR1cmUmIHNpZ25hdAogICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKG9sZENvbnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkU3RhY2tM
aW1pdCgpKSwgYmFzZU1lbW9yeSk7CiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoYmFzZU1lbW9y
eSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG5ld0NvbnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9m
ZnNldE9mQ2FjaGVkU3RhY2tMaW1pdCgpKSk7CiAgICAgICAgICAgICBqaXQuc3RvcmVXYXNtQ29u
dGV4dEluc3RhbmNlKG5ld0NvbnRleHRJbnN0YW5jZSk7Ci0gICAgICAgICAgICBBU1NFUlQocGlu
bmVkUmVncy5zaXplUmVnaXN0ZXIgIT0gYmFzZU1lbW9yeSk7CisgICAgICAgICAgICBBU1NFUlQo
cGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciAhPSBiYXNlTWVtb3J5KTsKICAg
ICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCBtb3JlIHRoYW4gb25lIG1lbW9y
eSBzaXplIHJlZ2lzdGVyCiAgICAgICAgICAgICAvLyAgIHNlZTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk1MgotICAgICAgICAgICAgQVNTRVJUKHBpbm5lZFJl
Z3Muc2l6ZVJlZ2lzdGVyICE9IG5ld0NvbnRleHRJbnN0YW5jZSk7Ci0gICAgICAgICAgICBHUFJS
ZWcgc2NyYXRjaE9yU2l6ZSA9IEdpZ2FjYWdlOjppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2
ZSkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogcGlubmVkUmVncy5zaXplUmVnaXN0ZXI7CisgICAg
ICAgICAgICBBU1NFUlQocGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciAhPSBu
ZXdDb250ZXh0SW5zdGFuY2UpOworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hPckJvdW5kc0No
ZWNraW5nU2l6ZSA9IEdpZ2FjYWdlOjppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyBw
YXJhbXMuZ3BTY3JhdGNoKDApIDogcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rl
cjsKIAotICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG5ld0Nv
bnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSwgcGlu
bmVkUmVncy5zaXplUmVnaXN0ZXIpOyAvLyBNZW1vcnkgc2l6ZS4KKyAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNl
OjpvZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpKSwgcGlubmVkUmVncy5ib3VuZHND
aGVja2luZ1NpemVSZWdpc3Rlcik7IC8vIE1lbW9yeSBzaXplLgogICAgICAgICAgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG5ld0NvbnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6
Om9mZnNldE9mQ2FjaGVkTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsgLy8gTWVtb3J5Ojp2b2lkKi4K
IAotICAgICAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUs
IGJhc2VNZW1vcnksIHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JTaXplKTsKKyAg
ICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNl
TWVtb3J5LCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JC
b3VuZHNDaGVja2luZ1NpemUpOwogICAgICAgICB9KTsKICAgICAgICAgZG9Db250ZXh0U3dpdGNo
LT5hcHBlbmROZXdDb250cm9sVmFsdWUobV9wcm9jLCBKdW1wLCBvcmlnaW4oKSwgY29udGludWF0
aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRp
bmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCmluZGV4
IDk0MWQwMTYzN2NjYzkwMjdiYjMwOTRmOWYyY2NjYjJlNmNkMzFhOTIuLjY1NzU5YTdjYzA5NTRk
NmFiNzU5ZWI0YThhOGMxNTE5NGNiOWNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQmluZGluZy5jcHAKQEAgLTQ5LDkgKzQ5LDkgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9XYXNtKHVu
c2kKICAgICBHUFJSZWcgYmFzZU1lbW9yeSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7
CiAgICAgQVNTRVJUKGJhc2VNZW1vcnkgIT0gR1BSUmVnOjpJbnZhbGlkR1BSUmVnKTsKICAgICBB
U1NFUlQoYmFzZU1lbW9yeSAhPSBzY3JhdGNoKTsKLSAgICBBU1NFUlQocGlubmVkUmVncy5zaXpl
UmVnaXN0ZXIgIT0gYmFzZU1lbW9yeSk7Ci0gICAgQVNTRVJUKHBpbm5lZFJlZ3Muc2l6ZVJlZ2lz
dGVyICE9IHNjcmF0Y2gpOwotICAgIEdQUlJlZyBzaXplUmVnQXNTY3JhdGNoID0gcGlubmVkUmVn
cy5zaXplUmVnaXN0ZXI7CisgICAgQVNTRVJUKHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXpl
UmVnaXN0ZXIgIT0gYmFzZU1lbW9yeSk7CisgICAgQVNTRVJUKHBpbm5lZFJlZ3MuYm91bmRzQ2hl
Y2tpbmdTaXplUmVnaXN0ZXIgIT0gc2NyYXRjaCk7CisgICAgR1BSUmVnIHNpemVSZWdBc1NjcmF0
Y2ggPSBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyOwogICAgIEFTU0VSVChz
aXplUmVnQXNTY3JhdGNoICE9IEdQUlJlZzo6SW52YWxpZEdQUlJlZyk7CiAKICAgICAvLyBCMydz
IGNhbGwgY29kZWdlbiBlbnN1cmVzIHRoYXQgdGhlIEpTQ2VsbCBpcyBhIFdlYkFzc2VtYmx5RnVu
Y3Rpb24uCkBAIC02OCwxMSArNjgsMTEgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9XYXNtKHVuc2kKICAgICAv
LyBGSVhNRSB0aGUgZm9sbG93aW5nIGNvZGUgYXNzdW1lcyB0aGF0IGFsbCBXYXNtOjpJbnN0YW5j
ZSBoYXZlIHRoZSBzYW1lIHBpbm5lZCByZWdpc3RlcnMuIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKICAgICAvLyBTZXQgdXAgdGhlIGNhbGxlZSdzIGJhc2VN
ZW1vcnkgcmVnaXN0ZXIgYXMgd2VsbCBhcyB0aGUgbWVtb3J5IHNpemUgcmVnaXN0ZXJzLgogICAg
IHsKLSAgICAgICAgR1BSUmVnIHNjcmF0Y2hPclNpemUgPSAhR2lnYWNhZ2U6OmlzRW5hYmxlZChH
aWdhY2FnZTo6UHJpbWl0aXZlKSA/IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyIDogd2FzbUNhbGxp
bmdDb252ZW50aW9uKCkucHJvbG9ndWVTY3JhdGNoR1BSc1sxXTsKKyAgICAgICAgR1BSUmVnIHNj
cmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSA9ICFHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdl
OjpQcmltaXRpdmUpID8gcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciA6IHdh
c21DYWxsaW5nQ29udmVudGlvbigpLnByb2xvZ3VlU2NyYXRjaEdQUnNbMV07CiAKLSAgICAgICAg
aml0LmxvYWRQdHIoSklUOjpBZGRyZXNzKGJhc2VNZW1vcnksIFdhc206Okluc3RhbmNlOjpvZmZz
ZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyKTsgLy8gTWVt
b3J5IHNpemUuCisgICAgICAgIGppdC5sb2FkUHRyKEpJVDo6QWRkcmVzcyhiYXNlTWVtb3J5LCBX
YXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSksIHBpbm5l
ZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIpOyAvLyBCb3VuZCBjaGVja2luZyBzaXpl
LgogICAgICAgICBqaXQubG9hZFB0cihKSVQ6OkFkZHJlc3MoYmFzZU1lbW9yeSwgV2FzbTo6SW5z
dGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsgLy8gV2FzbTo6TWVt
b3J5OjpUYWdnZWRBcnJheVN0b3JhZ2VQdHI8dm9pZD4gKHZvaWQqKS4KLSAgICAgICAgaml0LmNh
Z2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJl
Z3Muc2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JTaXplKTsKKyAgICAgICAgaml0LmNhZ2VDb25kaXRp
b25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJlZ3MuYm91bmRz
Q2hlY2tpbmdTaXplUmVnaXN0ZXIsIHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSk7CiAgICAg
fQogCiAgICAgLy8gVGFpbCBjYWxsIGludG8gdGhlIGNhbGxlZSBXZWJBc3NlbWJseSBmdW5jdGlv
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25h
bEhhbmRsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFs
SGFuZGxlci5jcHAKaW5kZXggM2VhMDA4ODkwMWI2YzI3Y2Y2NWIwYjQ3NGRkOGRjOTVjNzgxNTFm
Zi4uMDRjMzRiN2U4YWU2ZDdkZTZhYTlhZjQwOTM2YThjM2UyYTU3NGM0YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAK
QEAgLTYzLDI5ICs2Myw0MCBAQCBzdGF0aWMgU2lnbmFsQWN0aW9uIHRyYXBIYW5kbGVyKFNpZ25h
bCwgU2lnSW5mbyYgc2lnSW5mbywgUGxhdGZvcm1SZWdpc3RlcnMmIGNvbgogICAgIGRhdGFMb2dM
bklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgInN0YXJ0aW5nIGhh
bmRsZXIgZm9yIGZhdWx0IGF0OiAiLCBSYXdQb2ludGVyKGZhdWx0aW5nSW5zdHJ1Y3Rpb24pKTsK
IAogICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9z
ZSwgIkpJVCBtZW1vcnkgc3RhcnQ6ICIsIFJhd1BvaW50ZXIoc3RhcnRPZkZpeGVkRXhlY3V0YWJs
ZU1lbW9yeVBvb2woKSksICIgZW5kOiAiLCBSYXdQb2ludGVyKGVuZE9mRml4ZWRFeGVjdXRhYmxl
TWVtb3J5UG9vbCgpKSk7Ci0gICAgLy8gRmlyc3Qgd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgYXJl
IGluIEpJVCBjb2RlIGJlZm9yZSB3ZSBjYW4gYXF1aXJlIGFueSBsb2Nrcy4gT3RoZXJ3aXNlLAor
ICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwg
Ildhc21MTEludCBtZW1vcnkgc3RhcnQ6ICIsIFJhd1BvaW50ZXIodW50YWdDb2RlUHRyPHZvaWQq
LCBDRnVuY3Rpb25QdHJUYWc+KExMSW50Ojp3YXNtTExJbnRQQ1JhbmdlU3RhcnQpKSwgIiBlbmQ6
ICIsIFJhd1BvaW50ZXIodW50YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWc+KExMSW50
Ojp3YXNtTExJbnRQQ1JhbmdlRW5kKSkpOworICAgIC8vIEZpcnN0IHdlIG5lZWQgdG8gbWFrZSBz
dXJlIHdlIGFyZSBpbiBKSVQgY29kZSBvciBXYXNtIExMSW50IGNvZGUgYmVmb3JlIHdlIGNhbiBh
cXVpcmUgYW55IGxvY2tzLiBPdGhlcndpc2UsCiAgICAgLy8gd2UgbWlnaHQgaGF2ZSBjcmFzaGVk
IGluIGNvZGUgdGhhdCBpcyBhbHJlYWR5IGhvbGRpbmcgb25lIG9mIHRoZSBsb2NrcyB3ZSB3YW50
IHRvIGFxdWlyZS4KICAgICBhc3NlcnRJc05vdFRhZ2dlZChmYXVsdGluZ0luc3RydWN0aW9uKTsK
LSAgICBpZiAoaXNKSVRQQyhmYXVsdGluZ0luc3RydWN0aW9uKSkgewotICAgICAgICBib29sIGZh
dWx0ZWRJbkFjdGl2ZUZhc3RNZW1vcnkgPSBmYWxzZTsKKyAgICBpZiAoaXNKSVRQQyhmYXVsdGlu
Z0luc3RydWN0aW9uKSB8fCBMTEludDo6aXNXYXNtTExJbnRQQyhmYXVsdGluZ0luc3RydWN0aW9u
KSkgeworICAgICAgICBib29sIGZhdWx0ZWRJbkFjdGl2ZUdyb3dhYmxlTWVtb3J5ID0gZmFsc2U7
CiAgICAgICAgIHsKICAgICAgICAgICAgIHZvaWQqIGZhdWx0aW5nQWRkcmVzcyA9IHNpZ0luZm8u
ZmF1bHRpbmdBZGRyZXNzOwogICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFs
SGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAiY2hlY2tpbmcgZmF1bHRpbmcgYWRkcmVzczogIiwg
UmF3UG9pbnRlcihmYXVsdGluZ0FkZHJlc3MpLCAiIGlzIGluIGFuIGFjdGl2ZSBmYXN0IG1lbW9y
eSIpOwotICAgICAgICAgICAgZmF1bHRlZEluQWN0aXZlRmFzdE1lbW9yeSA9IFdhc206Ok1lbW9y
eTo6YWRkcmVzc0lzSW5BY3RpdmVGYXN0TWVtb3J5KGZhdWx0aW5nQWRkcmVzcyk7CisgICAgICAg
ICAgICBmYXVsdGVkSW5BY3RpdmVHcm93YWJsZU1lbW9yeSA9IFdhc206Ok1lbW9yeTo6YWRkcmVz
c0lzSW5BY3RpdmVHcm93YWJsZU1lbW9yeShmYXVsdGluZ0FkZHJlc3MpOwogICAgICAgICB9Ci0g
ICAgICAgIGlmIChmYXVsdGVkSW5BY3RpdmVGYXN0TWVtb3J5KSB7CisgICAgICAgIGlmIChmYXVs
dGVkSW5BY3RpdmVHcm93YWJsZU1lbW9yeSkgewogICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2Fz
bUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAiZm91bmQgYWN0aXZlIGZhc3Qg
bWVtb3J5IGZvciBmYXVsdGluZyBhZGRyZXNzIik7Ci0gICAgICAgICAgICBhdXRvJiBjYWxsZWVS
ZWdpc3RyeSA9IENhbGxlZVJlZ2lzdHJ5OjpzaW5nbGV0b24oKTsKLSAgICAgICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2soY2FsbGVlUmVnaXN0cnkuZ2V0TG9jaygpKTsKLSAgICAgICAgICAg
IGZvciAoYXV0byogY2FsbGVlIDogY2FsbGVlUmVnaXN0cnkuYWxsQ2FsbGVlcyhsb2NrZXIpKSB7
Ci0gICAgICAgICAgICAgICAgYXV0byBbc3RhcnQsIGVuZF0gPSBjYWxsZWUtPnJhbmdlKCk7Ci0g
ICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFs
Ojp2ZXJib3NlLCAiZnVuY3Rpb24gc3RhcnQ6ICIsIFJhd1BvaW50ZXIoc3RhcnQpLCAiIGVuZDog
IiwgUmF3UG9pbnRlcihlbmQpKTsKLSAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPD0gZmF1bHRp
bmdJbnN0cnVjdGlvbiAmJiBmYXVsdGluZ0luc3RydWN0aW9uIDwgZW5kKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVy
Ym9zZSwgImZvdW5kIG1hdGNoIik7Ci0gICAgICAgICAgICAgICAgICAgIE1hY2hpbmVDb250ZXh0
Ojphcmd1bWVudFBvaW50ZXI8MT4oY29udGV4dCkgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KFdhc206OkNvbnRleHQ6OnVzZUZhc3RUTFMoKSkpOwotICAg
ICAgICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6c2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKGNv
bnRleHQsIExMSW50OjpnZXRDb2RlUHRyPENGdW5jdGlvblB0clRhZz4od2FzbV90aHJvd19mcm9t
X2ZhdWx0X2hhbmRsZXJfdHJhbXBvbGluZSkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
U2lnbmFsQWN0aW9uOjpIYW5kbGVkOworCisgICAgICAgICAgICBhdXRvIGRvZXNGYXVsdEluV2Fz
bSA9IFtdKHZvaWQqIGZhdWx0aW5nSW5zdHJ1Y3Rpb24pIHsKKyAgICAgICAgICAgICAgICBpZiAo
TExJbnQ6OmlzV2FzbUxMSW50UEMoZmF1bHRpbmdJbnN0cnVjdGlvbikpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGF1dG8mIGNhbGxlZVJlZ2lzdHJ5
ID0gQ2FsbGVlUmVnaXN0cnk6OnNpbmdsZXRvbigpOworICAgICAgICAgICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2soY2FsbGVlUmVnaXN0cnkuZ2V0TG9jaygpKTsKKyAgICAgICAgICAgICAg
ICBmb3IgKGF1dG8qIGNhbGxlZSA6IGNhbGxlZVJlZ2lzdHJ5LmFsbENhbGxlZXMobG9ja2VyKSkg
eworICAgICAgICAgICAgICAgICAgICBhdXRvIFtzdGFydCwgZW5kXSA9IGNhbGxlZS0+cmFuZ2Uo
KTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxl
ckludGVybmFsOjp2ZXJib3NlLCAiZnVuY3Rpb24gc3RhcnQ6ICIsIFJhd1BvaW50ZXIoc3RhcnQp
LCAiIGVuZDogIiwgUmF3UG9pbnRlcihlbmQpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0
YXJ0IDw9IGZhdWx0aW5nSW5zdHJ1Y3Rpb24gJiYgZmF1bHRpbmdJbnN0cnVjdGlvbiA8IGVuZCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFu
ZGxlckludGVybmFsOjp2ZXJib3NlLCAiZm91bmQgbWF0Y2giKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH07CisKKyAg
ICAgICAgICAgIGlmIChkb2VzRmF1bHRJbldhc20oZmF1bHRpbmdJbnN0cnVjdGlvbikpIHsKKyAg
ICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6YXJndW1lbnRQb2ludGVyPDE+KGNvbnRleHQp
ID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihXYXNtOjpD
b250ZXh0Ojp1c2VGYXN0VExTKCkpKTsKKyAgICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6
c2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQsIExMSW50OjpnZXRDb2RlUHRyPENGdW5jdGlv
blB0clRhZz4od2FzbV90aHJvd19mcm9tX2ZhdWx0X2hhbmRsZXJfdHJhbXBvbGluZSkpOworICAg
ICAgICAgICAgICAgIHJldHVybiBTaWduYWxBY3Rpb246OkhhbmRsZWQ7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDcsNyArMTE4LDcgQEAgdm9pZCBlbmFibGVGYXN0TWVt
b3J5KCkKICAgICAgICAgaWYgKCFXYXNtOjppc1N1cHBvcnRlZCgpKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGlmICghT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCkp
CisgICAgICAgIGlmICghT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCkgJiYgIU9w
dGlvbnM6OnVzZVNoYXJlZEFycmF5QnVmZmVyKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgYWN0aXZhdGVTaWduYWxIYW5kbGVyc0ZvcihTaWduYWw6OkFjY2Vzc0ZhdWx0KTsKQEAg
LTEyNSw3ICsxMzYsNyBAQCB2b2lkIHByZXBhcmVGYXN0TWVtb3J5KCkKICAgICAgICAgaWYgKCFX
YXNtOjppc1N1cHBvcnRlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICgh
T3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCkpCisgICAgICAgIGlmICghT3B0aW9u
czo6dXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCkgJiYgIU9wdGlvbnM6OnVzZVNoYXJlZEFycmF5
QnVmZmVyKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYWRkU2lnbmFsSGFuZGxl
cihTaWduYWw6OkFjY2Vzc0ZhdWx0LCBbXSAoU2lnbmFsIHNpZ25hbCwgU2lnSW5mbyYgc2lnSW5m
bywgUGxhdGZvcm1SZWdpc3RlcnMmIHVjb250ZXh0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21JbnN0YW5jZS5oCmluZGV4IDYwZTU2MTkwMmQ0YzE4ZjgxZWUyZjM3Y2M1YmU3ZDY1
NDY2N2RlZWYuLjlhOTg1MmMyNDIyMDgyN2I3ZWEwZWU3NGRlZmE0MzQ1Yzg4MTBlZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCkBAIC03Nyw4ICs3Nyw4IEBA
IGNsYXNzIEluc3RhbmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPiwg
cHVibGljIENhbk1ha2VXZWFrUHRyPEluCiAgICAgVGFibGUqIHRhYmxlKHVuc2lnbmVkKTsKICAg
ICB2b2lkIHNldFRhYmxlKHVuc2lnbmVkLCBSZWY8VGFibGU+JiYpOwogCi0gICAgdm9pZCogY2Fj
aGVkTWVtb3J5KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRNZW1vcnkuZ2V0TWF5QmVOdWxsKGNh
Y2hlZE1lbW9yeVNpemUoKSk7IH0KLSAgICBzaXplX3QgY2FjaGVkTWVtb3J5U2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FjaGVkTWVtb3J5U2l6ZTsgfQorICAgIHZvaWQqIGNhY2hlZE1lbW9yeSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkTWVtb3J5LmdldE1heUJlTnVsbChjYWNoZWRCb3VuZHND
aGVja2luZ1NpemUoKSk7IH0KKyAgICBzaXplX3QgY2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9jYWNoZWRCb3VuZHNDaGVja2luZ1NpemU7IH0KIAogICAgIHZvaWQg
c2V0TWVtb3J5KFJlZjxNZW1vcnk+JiYgbWVtb3J5KQogICAgIHsKQEAgLTg5LDggKzg5LDggQEAg
Y2xhc3MgSW5zdGFuY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW5zdGFuY2U+LCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW4KICAgICB2b2lkIHVwZGF0ZUNhY2hlZE1lbW9yeSgpCiAg
ICAgewogICAgICAgICBpZiAobV9tZW1vcnkgIT0gbnVsbHB0cikgewotICAgICAgICAgICAgbV9j
YWNoZWRNZW1vcnkgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdl
ZFB0cj4obWVtb3J5KCktPm1lbW9yeSgpLCBtZW1vcnkoKS0+c2l6ZSgpKTsKLSAgICAgICAgICAg
IG1fY2FjaGVkTWVtb3J5U2l6ZSA9IG1lbW9yeSgpLT5zaXplKCk7CisgICAgICAgICAgICBtX2Nh
Y2hlZE1lbW9yeSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2Vk
UHRyPihtZW1vcnkoKS0+bWVtb3J5KCksIG1lbW9yeSgpLT5ib3VuZHNDaGVja2luZ1NpemUoKSk7
CisgICAgICAgICAgICBtX2NhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSA9IG1lbW9yeSgpLT5ib3Vu
ZHNDaGVja2luZ1NpemUoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTQ2LDcgKzE0Niw3IEBA
IGNsYXNzIEluc3RhbmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPiwg
cHVibGljIENhbk1ha2VXZWFrUHRyPEluCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk1l
bW9yeSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5jZSwgbV9tZW1vcnkpOyB9CiAg
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkdsb2JhbHMoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoSW5zdGFuY2UsIG1fZ2xvYmFscyk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mQ2FjaGVkTWVtb3J5KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX2Nh
Y2hlZE1lbW9yeSk7IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FjaGVkTWVtb3J5
U2l6ZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5jZSwgbV9jYWNoZWRNZW1vcnlT
aXplKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2lu
Z1NpemUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fY2FjaGVkQm91bmRz
Q2hlY2tpbmdTaXplKTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZQb2ludGVyVG9U
b3BFbnRyeUZyYW1lKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX3BvaW50
ZXJUb1RvcEVudHJ5RnJhbWUpOyB9CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUG9p
bnRlclRvQWN0dWFsU3RhY2tMaW1pdCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5j
ZSwgbV9wb2ludGVyVG9BY3R1YWxTdGFja0xpbWl0KTsgfQpAQCAtMjAxLDcgKzIwMSw3IEBAIGNs
YXNzIEluc3RhbmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPiwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPEluCiAgICAgdm9pZCogbV9vd25lciB7IG51bGxwdHIgfTsgLy8g
SW4gYSBKUyBlbWJlZGRpbmcsIHRoaXMgaXMgYSBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqLgogICAg
IENvbnRleHQqIG1fY29udGV4dCB7IG51bGxwdHIgfTsKICAgICBDYWdlZFB0cjxHaWdhY2FnZTo6
UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj4gbV9jYWNoZWRNZW1vcnk7Ci0gICAgc2l6ZV90
IG1fY2FjaGVkTWVtb3J5U2l6ZSB7IDAgfTsKKyAgICBzaXplX3QgbV9jYWNoZWRCb3VuZHNDaGVj
a2luZ1NpemUgeyAwIH07CiAgICAgUmVmPE1vZHVsZT4gbV9tb2R1bGU7CiAgICAgUmVmUHRyPENv
ZGVCbG9jaz4gbV9jb2RlQmxvY2s7CiAgICAgUmVmUHRyPE1lbW9yeT4gbV9tZW1vcnk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuY3BwCmluZGV4IGEyNmU4MWQ3MTI0ZjMw
YWUxM2Q4MmI3NGNiMWQ0MzA2YTM0ZTI1YjIuLjMwMDQyNDZlNTlhZjdiZjY1NjcxOGMxMDM0MThh
NWJiZTU5MjM1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21N
ZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuY3Bw
CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8
d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1JBTVNpemUuaD4KKyNpbmNsdWRlIDx3
dGYvU3RkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaW5jbHVkZSA8Y3N0cmlu
Zz4KQEAgLTEzMywxNiArMTM0LDU1IEBAIGNsYXNzIE1lbW9yeU1hbmFnZXIgewogICAgICAgICAK
ICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6bG9nV2ViQXNzZW1ibHlNZW1vcnkoKSwgIkZy
ZWVkIHZpcnR1YWw7IHN0YXRlOiAiLCAqdGhpcyk7CiAgICAgfQotICAgIAotICAgIGJvb2wgaXNB
ZGRyZXNzSW5GYXN0TWVtb3J5KHZvaWQqIGFkZHJlc3MpCisKKyAgICBNZW1vcnlSZXN1bHQgdHJ5
QWxsb2NhdGVHcm93YWJsZUJvdW5kc0NoZWNraW5nTWVtb3J5KHNpemVfdCBtYXBwZWRDYXBhY2l0
eSkKKyAgICB7CisgICAgICAgIE1lbW9yeVJlc3VsdCByZXN1bHQgPSBbJl0geworICAgICAgICAg
ICAgYXV0byBob2xkZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgICAgICAgICAgdm9pZCogcmVz
dWx0ID0gR2lnYWNhZ2U6OnRyeUFsbG9jYXRlWmVyb2VkVmlydHVhbFBhZ2VzKEdpZ2FjYWdlOjpQ
cmltaXRpdmUsIG1hcHBlZENhcGFjaXR5KTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KQorICAg
ICAgICAgICAgICAgIHJldHVybiBNZW1vcnlSZXN1bHQobnVsbHB0ciwgTWVtb3J5UmVzdWx0OjpT
eW5jVHJ5VG9SZWNsYWltTWVtb3J5KTsKKworICAgICAgICAgICAgbV9ncm93YWJsZUJvdW5kc0No
ZWNraW5nTWVtb3JpZXMuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KHJlc3VsdCksIG1hcHBlZENhcGFjaXR5KSk7CisKKyAgICAgICAgICAgIHJldHVybiBNZW1v
cnlSZXN1bHQocmVzdWx0LCBNZW1vcnlSZXN1bHQ6OlN1Y2Nlc3MpOworICAgICAgICB9KCk7CisK
KyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6bG9nV2ViQXNzZW1ibHlNZW1vcnkoKSwgIkFs
bG9jYXRlZCB2aXJ0dWFsOiAiLCByZXN1bHQsICI7IHN0YXRlOiAiLCAqdGhpcyk7CisKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB2b2lkIGZyZWVHcm93YWJsZUJvdW5kc0No
ZWNraW5nTWVtb3J5KHZvaWQqIGJhc2VQdHIsIHNpemVfdCBtYXBwZWRDYXBhY2l0eSkKKyAgICB7
CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gaG9sZGVyID0gaG9sZExvY2sobV9sb2NrKTsK
KyAgICAgICAgICAgIEdpZ2FjYWdlOjpmcmVlVmlydHVhbFBhZ2VzKEdpZ2FjYWdlOjpQcmltaXRp
dmUsIGJhc2VQdHIsIG1hcHBlZENhcGFjaXR5KTsKKyAgICAgICAgICAgIG1fZ3Jvd2FibGVCb3Vu
ZHNDaGVja2luZ01lbW9yaWVzLmVyYXNlKHN0ZDo6bWFrZV9wYWlyKGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KGJhc2VQdHIpLCBtYXBwZWRDYXBhY2l0eSkpOworICAgICAgICB9CisKKyAgICAgICAg
ZGF0YUxvZ0xuSWYoT3B0aW9uczo6bG9nV2ViQXNzZW1ibHlNZW1vcnkoKSwgIkZyZWVkIHZpcnR1
YWw7IHN0YXRlOiAiLCAqdGhpcyk7CisgICAgfQorCisgICAgYm9vbCBpc0FkZHJlc3NJbkdyb3dh
YmxlTWVtb3J5KHZvaWQqIGFkZHJlc3MpCiAgICAgewotICAgICAgICAvLyBOT1RFOiBUaGlzIGNh
biBiZSBjYWxsZWQgZnJvbSBhIHNpZ25hbCBoYW5kbGVyLCBidXQgb25seSBhZnRlciB3ZSBwcm92
ZWQgdGhhdCB3ZSdyZSBpbiBKSVQgY29kZS4KKyAgICAgICAgLy8gTk9URTogVGhpcyBjYW4gYmUg
Y2FsbGVkIGZyb20gYSBzaWduYWwgaGFuZGxlciwgYnV0IG9ubHkgYWZ0ZXIgd2UgcHJvdmVkIHRo
YXQgd2UncmUgaW4gSklUIGNvZGUgb3IgV2FzbUxMSW50IGNvZGUuCiAgICAgICAgIGF1dG8gaG9s
ZGVyID0gaG9sZExvY2sobV9sb2NrKTsKICAgICAgICAgZm9yICh2b2lkKiBtZW1vcnkgOiBtX2Zh
c3RNZW1vcmllcykgewogICAgICAgICAgICAgY2hhciogc3RhcnQgPSBzdGF0aWNfY2FzdDxjaGFy
Kj4obWVtb3J5KTsKICAgICAgICAgICAgIGlmIChzdGFydCA8PSBhZGRyZXNzICYmIGFkZHJlc3Mg
PD0gc3RhcnQgKyBNZW1vcnk6OmZhc3RNYXBwZWRCeXRlcygpKQogICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CisgICAgICAgIHVpbnRwdHJfdCBhZGRyZXNzVmFsdWUgPSBi
aXR3aXNlX2Nhc3Q8dWludHB0cl90PihhZGRyZXNzKTsKKyAgICAgICAgYXV0byBpdGVyYXRvciA9
IHN0ZDo6dXBwZXJfYm91bmQobV9ncm93YWJsZUJvdW5kc0NoZWNraW5nTWVtb3JpZXMuYmVnaW4o
KSwgbV9ncm93YWJsZUJvdW5kc0NoZWNraW5nTWVtb3JpZXMuZW5kKCksIHN0ZDo6bWFrZV9wYWly
KGFkZHJlc3NWYWx1ZSwgMCksCisgICAgICAgICAgICBbXShzdGQ6OnBhaXI8dWludHB0cl90LCBz
aXplX3Q+IGEsIHN0ZDo6cGFpcjx1aW50cHRyX3QsIHNpemVfdD4gYikgeworICAgICAgICAgICAg
ICAgIHJldHVybiAoYS5maXJzdCArIGEuc2Vjb25kKSA8IChiLmZpcnN0ICsgYi5zZWNvbmQpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIGlmIChpdGVyYXRvciAhPSBtX2dyb3dhYmxlQm91bmRz
Q2hlY2tpbmdNZW1vcmllcy5lbmQoKSkgeworICAgICAgICAgICAgLy8gU2luY2Ugd2UgbmV2ZXIg
aGF2ZSBvdmVybGFwcGVkIHJhbmdlIGluIG1fZ3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9yaWVz
LCBqdXN0IGNoZWNraW5nIG9uZSBsb3dlci1ib3VuZCByYW5nZSBpcyBlbm91Z2guCisgICAgICAg
ICAgICBpZiAoaXRlcmF0b3ItPmZpcnN0IDw9IGFkZHJlc3NWYWx1ZSAmJiBhZGRyZXNzVmFsdWUg
PCAoaXRlcmF0b3ItPmZpcnN0ICsgaXRlcmF0b3ItPnNlY29uZCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtMTkyLDYgKzIzMiw3IEBAIGNsYXNzIE1lbW9yeU1hbmFnZXIgewogICAgIExvY2sgbV9sb2Nr
OwogICAgIHVuc2lnbmVkIG1fbWF4RmFzdE1lbW9yeUNvdW50IHsgMCB9OwogICAgIFZlY3Rvcjx2
b2lkKj4gbV9mYXN0TWVtb3JpZXM7CisgICAgU3RkU2V0PHN0ZDo6cGFpcjx1aW50cHRyX3QsIHNp
emVfdD4+IG1fZ3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9yaWVzOwogICAgIHNpemVfdCBtX3Bo
eXNpY2FsQnl0ZXMgeyAwIH07CiB9OwogCkBAIC0yMzUsMzAgKzI3Niw2OSBAQCBib29sIHRyeUFs
bG9jYXRlKGNvbnN0IEZ1bmMmIGFsbG9jYXRlLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoTWVt
b3J5OjpOb3RpZnlQcgogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAorCitNZW1vcnlIYW5k
bGU6Ok1lbW9yeUhhbmRsZSh2b2lkKiBtZW1vcnksIHNpemVfdCBzaXplLCBzaXplX3QgbWFwcGVk
Q2FwYWNpdHksIFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgTWVtb3J5U2hh
cmluZ01vZGUgc2hhcmluZ01vZGUsIE1lbW9yeU1vZGUgbW9kZSkKKyAgICA6IG1fbWVtb3J5KG1l
bW9yeSwgbWFwcGVkQ2FwYWNpdHkpCisgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAsIG1fbWFwcGVk
Q2FwYWNpdHkobWFwcGVkQ2FwYWNpdHkpCisgICAgLCBtX2luaXRpYWwoaW5pdGlhbCkKKyAgICAs
IG1fbWF4aW11bShtYXhpbXVtKQorICAgICwgbV9zaGFyaW5nTW9kZShzaGFyaW5nTW9kZSkKKyAg
ICAsIG1fbW9kZShtb2RlKQoreworfQorCitNZW1vcnlIYW5kbGU6On5NZW1vcnlIYW5kbGUoKQor
eworICAgIGlmIChtX21lbW9yeSkgeworICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZVBoeXNp
Y2FsQnl0ZXMobV9zaXplKTsKKyAgICAgICAgc3dpdGNoIChtX21vZGUpIHsKKyAgICAgICAgY2Fz
ZSBNZW1vcnlNb2RlOjpTaWduYWxpbmc6CisgICAgICAgICAgICBpZiAobXByb3RlY3QobWVtb3J5
KCksIE1lbW9yeTo6ZmFzdE1hcHBlZEJ5dGVzKCksIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpKSB7
CisgICAgICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihl
cnJubyksICJcbiIpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZUZhc3RN
ZW1vcnkobWVtb3J5KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVtb3J5
TW9kZTo6Qm91bmRzQ2hlY2tpbmc6IHsKKyAgICAgICAgICAgIHN3aXRjaCAobV9zaGFyaW5nTW9k
ZSkgeworICAgICAgICAgICAgY2FzZSBNZW1vcnlTaGFyaW5nTW9kZTo6RGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICBHaWdhY2FnZTo6ZnJlZVZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6UHJpbWl0aXZl
LCBtZW1vcnkoKSwgbV9zaXplKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgTWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZDogeworICAgICAgICAgICAgICAgIGlmICht
cHJvdGVjdChtZW1vcnkoKSwgbV9tYXBwZWRDYXBhY2l0eSwgUFJPVF9SRUFEIHwgUFJPVF9XUklU
RSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBz
dHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtZW1v
cnlNYW5hZ2VyKCkuZnJlZUdyb3dhYmxlQm91bmRzQ2hlY2tpbmdNZW1vcnkobWVtb3J5KCksIG1f
bWFwcGVkQ2FwYWNpdHkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KK30KKwogTWVtb3J5OjpNZW1vcnkoKQorICAgIDogbV9oYW5kbGUoYWRvcHRSZWYoKm5l
dyBNZW1vcnlIYW5kbGUobnVsbHB0ciwgMCwgMCwgUGFnZUNvdW50KDApLCBQYWdlQ291bnQoMCks
IE1lbW9yeVNoYXJpbmdNb2RlOjpEZWZhdWx0LCBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykp
KQogewogfQogCi1NZW1vcnk6Ok1lbW9yeShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1h
eGltdW0sIEZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNz
dXJlLCBGdW5jdGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1N
ZW1vcnksIFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291
bnQpPiYmIGdyb3dTdWNjZXNzQ2FsbGJhY2spCi0gICAgOiBtX2luaXRpYWwoaW5pdGlhbCkKLSAg
ICAsIG1fbWF4aW11bShtYXhpbXVtKQorTWVtb3J5OjpNZW1vcnkoUGFnZUNvdW50IGluaXRpYWws
IFBhZ2VDb3VudCBtYXhpbXVtLCBNZW1vcnlTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSwgRnVuY3Rp
b248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIEZ1bmN0aW9u
PHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpG
dW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1
Y2Nlc3NDYWxsYmFjaykKKyAgICA6IG1faGFuZGxlKGFkb3B0UmVmKCpuZXcgTWVtb3J5SGFuZGxl
KG51bGxwdHIsIDAsIDAsIGluaXRpYWwsIG1heGltdW0sIHNoYXJpbmdNb2RlLCBNZW1vcnlNb2Rl
OjpCb3VuZHNDaGVja2luZykpKQogICAgICwgbV9ub3RpZnlNZW1vcnlQcmVzc3VyZShXVEZNb3Zl
KG5vdGlmeU1lbW9yeVByZXNzdXJlKSkKICAgICAsIG1fc3luY1RyeVRvUmVjbGFpbU1lbW9yeShX
VEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpKQogICAgICwgbV9ncm93U3VjY2Vzc0NhbGxi
YWNrKFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykpCiB7CiAgICAgQVNTRVJUKCFpbml0aWFs
LmJ5dGVzKCkpOwotICAgIEFTU0VSVChtX21vZGUgPT0gTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tp
bmcpOworICAgIEFTU0VSVChtb2RlKCkgPT0gTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpOwog
ICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJNZW1vcnk6Ok1lbW9yeSBhbGxvY2F0aW5nICIsICp0
aGlzKTsKICAgICBBU1NFUlQoIW1lbW9yeSgpKTsKIH0KIAotTWVtb3J5OjpNZW1vcnkodm9pZCog
bWVtb3J5LCBQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIHNpemVfdCBtYXBw
ZWRDYXBhY2l0eSwgTWVtb3J5TW9kZSBtb2RlLCBGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJl
KT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgRnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWlt
KT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nl
c3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKQotICAgIDog
bV9tZW1vcnkobWVtb3J5LCBpbml0aWFsLmJ5dGVzKCkpCi0gICAgLCBtX3NpemUoaW5pdGlhbC5i
eXRlcygpKQotICAgICwgbV9pbml0aWFsKGluaXRpYWwpCi0gICAgLCBtX21heGltdW0obWF4aW11
bSkKLSAgICAsIG1fbWFwcGVkQ2FwYWNpdHkobWFwcGVkQ2FwYWNpdHkpCi0gICAgLCBtX21vZGUo
bW9kZSkKK01lbW9yeTo6TWVtb3J5KFJlZjxNZW1vcnlIYW5kbGU+JiYgaGFuZGxlLCBGdW5jdGlv
bjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgRnVuY3Rpb248
dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1
bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3Vj
Y2Vzc0NhbGxiYWNrKQorICAgIDogbV9oYW5kbGUoV1RGTW92ZShoYW5kbGUpKQogICAgICwgbV9u
b3RpZnlNZW1vcnlQcmVzc3VyZShXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJlKSkKICAgICAs
IG1fc3luY1RyeVRvUmVjbGFpbU1lbW9yeShXVEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkp
KQogICAgICwgbV9ncm93U3VjY2Vzc0NhbGxiYWNrKFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFj
aykpCkBAIC0yNzEsNyArMzUxLDEyIEBAIFJlZjxNZW1vcnk+IE1lbW9yeTo6Y3JlYXRlKCkKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZW1vcnkoKSk7CiB9CiAKLVJlZlB0cjxNZW1vcnk+IE1l
bW9yeTo6dHJ5Q3JlYXRlKFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgV1RG
OjpGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwg
V1RGOjpGdW5jdGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1N
ZW1vcnksIFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291
bnQpPiYmIGdyb3dTdWNjZXNzQ2FsbGJhY2spCitSZWY8TWVtb3J5PiBNZW1vcnk6OmNyZWF0ZShS
ZWY8TWVtb3J5SGFuZGxlPiYmIGhhbmRsZSwgV1RGOjpGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNz
dXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFN5bmNUcnlU
b1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdURjo6RnVuY3Rpb248dm9pZChH
cm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNjZXNzQ2FsbGJhY2sp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVtb3J5KFdURk1vdmUoaGFuZGxlKSwgV1RG
TW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1vdmUoc3luY1RyeVRvUmVjbGFpbU1lbW9y
eSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykpKTsKK30KKworUmVmUHRyPE1lbW9yeT4g
TWVtb3J5Ojp0cnlDcmVhdGUoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBN
ZW1vcnlTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSwgV1RGOjpGdW5jdGlvbjx2b2lkKE5vdGlmeVBy
ZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFN5bmNU
cnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdURjo6RnVuY3Rpb248dm9p
ZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNjZXNzQ2FsbGJh
Y2spCiB7CiAgICAgQVNTRVJUKGluaXRpYWwpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFtYXhpbXVt
IHx8IG1heGltdW0gPj0gaW5pdGlhbCk7IC8vIFRoaXMgc2hvdWxkIGJlIGd1YXJhbnRlZWQgYnkg
b3VyIGNhbGxlci4KQEAgLTI4NSw3ICszNzAsNyBAQCBSZWZQdHI8TWVtb3J5PiBNZW1vcnk6OnRy
eUNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIFdURjo6RnVuYwog
ICAgIGlmIChtYXhpbXVtICYmICFtYXhpbXVtQnl0ZXMpIHsKICAgICAgICAgLy8gVXNlciBzcGVj
aWZpZWQgYSB6ZXJvIG1heGltdW0sIGluaXRpYWwgc2l6ZSBtdXN0IGFsc28gYmUgemVyby4KICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIWluaXRpYWxCeXRlcyk7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgTWVtb3J5KGluaXRpYWwsIG1heGltdW0sIFdURk1vdmUobm90aWZ5TWVtb3J5UHJl
c3N1cmUpLCBXVEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpLCBXVEZNb3ZlKGdyb3dTdWNj
ZXNzQ2FsbGJhY2spKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVtb3J5KGluaXRp
YWwsIG1heGltdW0sIHNoYXJpbmdNb2RlLCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJlKSwg
V1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92ZShncm93U3VjY2Vzc0NhbGxi
YWNrKSkpOwogICAgIH0KICAgICAKICAgICBib29sIGRvbmUgPSB0cnlBbGxvY2F0ZSgKQEAgLTMw
Niw0OCArMzkxLDU2IEBAIFJlZlB0cjxNZW1vcnk+IE1lbW9yeTo6dHJ5Q3JlYXRlKFBhZ2VDb3Vu
dCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgV1RGOjpGdW5jCiAgICAgfQogICAgIAogICAg
IGlmIChmYXN0TWVtb3J5KSB7Ci0gICAgICAgIAogICAgICAgICBpZiAobXByb3RlY3QoZmFzdE1l
bW9yeSArIGluaXRpYWxCeXRlcywgTWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSAtIGluaXRpYWxC
eXRlcywgUFJPVF9OT05FKSkgewogICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVk
OiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
TWVtb3J5KGZhc3RNZW1vcnksIGluaXRpYWwsIG1heGltdW0sIE1lbW9yeTo6ZmFzdE1hcHBlZEJ5
dGVzKCksIE1lbW9yeU1vZGU6OlNpZ25hbGluZywgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3Vy
ZSksIFdURk1vdmUoc3luY1RyeVRvUmVjbGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3ND
YWxsYmFjaykpKTsKKyAgICAgICAgcmV0dXJuIE1lbW9yeTo6Y3JlYXRlKGFkb3B0UmVmKCpuZXcg
TWVtb3J5SGFuZGxlKGZhc3RNZW1vcnksIGluaXRpYWxCeXRlcywgTWVtb3J5OjpmYXN0TWFwcGVk
Qnl0ZXMoKSwgaW5pdGlhbCwgbWF4aW11bSwgc2hhcmluZ01vZGUsIE1lbW9yeU1vZGU6OlNpZ25h
bGluZykpLCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJlKSwgV1RGTW92ZShzeW5jVHJ5VG9S
ZWNsYWltTWVtb3J5KSwgV1RGTW92ZShncm93U3VjY2Vzc0NhbGxiYWNrKSk7CiAgICAgfQogICAg
IAogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpjcmFzaElmV2ViQXNzZW1ibHlDYW50RmFzdE1l
bW9yeSgpKSkKICAgICAgICAgd2ViQXNzZW1ibHlDb3VsZG50R2V0RmFzdE1lbW9yeSgpOwogCiAg
ICAgaWYgKCFpbml0aWFsQnl0ZXMpCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVtb3J5
KGluaXRpYWwsIG1heGltdW0sIFdURk1vdmUobm90aWZ5TWVtb3J5UHJlc3N1cmUpLCBXVEZNb3Zl
KHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpLCBXVEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJhY2spKSk7
Ci0gICAgCi0gICAgdm9pZCogc2xvd01lbW9yeSA9IEdpZ2FjYWdlOjp0cnlBbGxvY2F0ZVplcm9l
ZFZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBpbml0aWFsQnl0ZXMpOwotICAgIGlm
ICghc2xvd01lbW9yeSkgewotICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZVBoeXNpY2FsQnl0
ZXMoaW5pdGlhbEJ5dGVzKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgTWVtb3J5KGluaXRpYWwsIG1heGltdW0sIHNoYXJpbmdNb2RlLCBXVEZN
b3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJlKSwgV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5
KSwgV1RGTW92ZShncm93U3VjY2Vzc0NhbGxiYWNrKSkpOworCisgICAgc3dpdGNoIChzaGFyaW5n
TW9kZSkgeworICAgIGNhc2UgTWVtb3J5U2hhcmluZ01vZGU6OkRlZmF1bHQ6IHsKKyAgICAgICAg
dm9pZCogc2xvd01lbW9yeSA9IEdpZ2FjYWdlOjp0cnlBbGxvY2F0ZVplcm9lZFZpcnR1YWxQYWdl
cyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBpbml0aWFsQnl0ZXMpOworICAgICAgICBpZiAoIXNsb3dN
ZW1vcnkpIHsKKyAgICAgICAgICAgIG1lbW9yeU1hbmFnZXIoKS5mcmVlUGh5c2ljYWxCeXRlcyhp
bml0aWFsQnl0ZXMpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIE1lbW9yeTo6Y3JlYXRlKGFkb3B0UmVmKCpuZXcgTWVtb3J5SGFuZGxlKHNs
b3dNZW1vcnksIGluaXRpYWxCeXRlcywgaW5pdGlhbEJ5dGVzLCBpbml0aWFsLCBtYXhpbXVtLCBz
aGFyaW5nTW9kZSwgTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKSwgV1RGTW92ZShub3RpZnlN
ZW1vcnlQcmVzc3VyZSksIFdURk1vdmUoc3luY1RyeVRvUmVjbGFpbU1lbW9yeSksIFdURk1vdmUo
Z3Jvd1N1Y2Nlc3NDYWxsYmFjaykpOwogICAgIH0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1l
bW9yeShzbG93TWVtb3J5LCBpbml0aWFsLCBtYXhpbXVtLCBpbml0aWFsQnl0ZXMsIE1lbW9yeU1v
ZGU6OkJvdW5kc0NoZWNraW5nLCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJlKSwgV1RGTW92
ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92ZShncm93U3VjY2Vzc0NhbGxiYWNrKSkp
OwotfQorICAgIGNhc2UgTWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZDogeworICAgICAgICBjaGFy
KiBzbG93TWVtb3J5ID0gbnVsbHB0cjsKKyAgICAgICAgdHJ5QWxsb2NhdGUoCisgICAgICAgICAg
ICBbJl0gKCkgLT4gTWVtb3J5UmVzdWx0OjpLaW5kIHsKKyAgICAgICAgICAgICAgICBhdXRvIHJl
c3VsdCA9IG1lbW9yeU1hbmFnZXIoKS50cnlBbGxvY2F0ZUdyb3dhYmxlQm91bmRzQ2hlY2tpbmdN
ZW1vcnkobWF4aW11bUJ5dGVzKTsKKyAgICAgICAgICAgICAgICBzbG93TWVtb3J5ID0gYml0d2lz
ZV9jYXN0PGNoYXIqPihyZXN1bHQuYmFzZVB0cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdC5raW5kOworICAgICAgICAgICAgfSwgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIHN5bmNUcnlU
b1JlY2xhaW1NZW1vcnkpOworICAgICAgICBpZiAoIXNsb3dNZW1vcnkpIHsKKyAgICAgICAgICAg
IG1lbW9yeU1hbmFnZXIoKS5mcmVlUGh5c2ljYWxCeXRlcyhpbml0aWFsQnl0ZXMpOworICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KIAotTWVtb3J5Ojp+TWVtb3J5KCkKLXsK
LSAgICBpZiAobV9tZW1vcnkpIHsKLSAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVQaHlzaWNh
bEJ5dGVzKG1fc2l6ZSk7Ci0gICAgICAgIHN3aXRjaCAobV9tb2RlKSB7Ci0gICAgICAgIGNhc2Ug
TWVtb3J5TW9kZTo6U2lnbmFsaW5nOgotICAgICAgICAgICAgaWYgKG1wcm90ZWN0KG1lbW9yeSgp
LCBNZW1vcnk6OmZhc3RNYXBwZWRCeXRlcygpLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKSkgewot
ICAgICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJy
bm8pLCAiXG4iKTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVGYXN0TWVt
b3J5KG1lbW9yeSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1lbW9yeU1v
ZGU6OkJvdW5kc0NoZWNraW5nOgotICAgICAgICAgICAgR2lnYWNhZ2U6OmZyZWVWaXJ0dWFsUGFn
ZXMoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgbWVtb3J5KCksIG1fc2l6ZSk7Ci0gICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgaWYgKG1wcm90ZWN0KHNsb3dNZW1vcnkgKyBpbml0aWFsQnl0ZXMsIG1h
eGltdW1CeXRlcyAtIGluaXRpYWxCeXRlcywgUFJPVF9OT05FKSkgeworICAgICAgICAgICAgZGF0
YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQorCisgICAgICAg
IHJldHVybiBNZW1vcnk6OmNyZWF0ZShhZG9wdFJlZigqbmV3IE1lbW9yeUhhbmRsZShzbG93TWVt
b3J5LCBpbml0aWFsQnl0ZXMsIG1heGltdW1CeXRlcywgaW5pdGlhbCwgbWF4aW11bSwgc2hhcmlu
Z01vZGUsIE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSksIFdURk1vdmUobm90aWZ5TWVtb3J5
UHJlc3N1cmUpLCBXVEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpLCBXVEZNb3ZlKGdyb3dT
dWNjZXNzQ2FsbGJhY2spKTsKICAgICB9CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK01lbW9yeTo6fk1lbW9yeSgpID0g
ZGVmYXVsdDsKKwogc2l6ZV90IE1lbW9yeTo6ZmFzdE1hcHBlZFJlZHpvbmVCeXRlcygpCiB7CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oUGFnZUNvdW50OjpwYWdlU2l6ZSkgKiBPcHRp
b25zOjp3ZWJBc3NlbWJseUZhc3RNZW1vcnlSZWR6b25lUGFnZXMoKTsKQEAgLTM1OSwxOCArNDUy
LDc3IEBAIHNpemVfdCBNZW1vcnk6OmZhc3RNYXBwZWRCeXRlcygpCiAgICAgcmV0dXJuIChzdGF0
aWNfY2FzdDxzaXplX3Q+KDEpIDw8IDMyKSArIGZhc3RNYXBwZWRSZWR6b25lQnl0ZXMoKTsKIH0K
IAotYm9vbCBNZW1vcnk6OmFkZHJlc3NJc0luQWN0aXZlRmFzdE1lbW9yeSh2b2lkKiBhZGRyZXNz
KQorYm9vbCBNZW1vcnk6OmFkZHJlc3NJc0luQWN0aXZlR3Jvd2FibGVNZW1vcnkodm9pZCogYWRk
cmVzcykKIHsKLSAgICByZXR1cm4gbWVtb3J5TWFuYWdlcigpLmlzQWRkcmVzc0luRmFzdE1lbW9y
eShhZGRyZXNzKTsKKyAgICByZXR1cm4gbWVtb3J5TWFuYWdlcigpLmlzQWRkcmVzc0luR3Jvd2Fi
bGVNZW1vcnkoYWRkcmVzcyk7CiB9CiAKLUV4cGVjdGVkPFBhZ2VDb3VudCwgTWVtb3J5OjpHcm93
RmFpbFJlYXNvbj4gTWVtb3J5Ojpncm93KFBhZ2VDb3VudCBkZWx0YSkKK0V4cGVjdGVkPFBhZ2VD
b3VudCwgTWVtb3J5OjpHcm93RmFpbFJlYXNvbj4gTWVtb3J5Ojpncm93U2hhcmVkKFBhZ2VDb3Vu
dCBkZWx0YSkKIHsKLSAgICBjb25zdCBXYXNtOjpQYWdlQ291bnQgb2xkUGFnZUNvdW50ID0gc2l6
ZUluUGFnZXMoKTsKKyAgICBXYXNtOjpQYWdlQ291bnQgb2xkUGFnZUNvdW50OworICAgIFdhc206
OlBhZ2VDb3VudCBuZXdQYWdlQ291bnQ7CisgICAgYXV0byByZXN1bHQgPSAoWyZdKCkgLT4gRXhw
ZWN0ZWQ8UGFnZUNvdW50LCBNZW1vcnk6Okdyb3dGYWlsUmVhc29uPiB7CisgICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9oYW5kbGUtPmxvY2soKSk7CisKKyAgICAgICAgb2xkUGFnZUNv
dW50ID0gc2l6ZUluUGFnZXMoKTsKKyAgICAgICAgbmV3UGFnZUNvdW50ID0gb2xkUGFnZUNvdW50
ICsgZGVsdGE7CisgICAgICAgIGlmICghbmV3UGFnZUNvdW50IHx8ICFuZXdQYWdlQ291bnQuaXNW
YWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEdyb3dGYWlsUmVhc29u
OjpJbnZhbGlkR3Jvd1NpemUpOworICAgICAgICBpZiAobmV3UGFnZUNvdW50LmJ5dGVzKCkgPiBN
QVhfQVJSQVlfQlVGRkVSX1NJWkUpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
R3Jvd0ZhaWxSZWFzb246Ok91dE9mTWVtb3J5KTsKKworICAgICAgICBpZiAoIWRlbHRhLnBhZ2VD
b3VudCgpKQorICAgICAgICAgICAgcmV0dXJuIG9sZFBhZ2VDb3VudDsKKworICAgICAgICBkYXRh
TG9nTG5JZih2ZXJib3NlLCAiTWVtb3J5Ojpncm93KCIsIGRlbHRhLCAiKSB0byAiLCBuZXdQYWdl
Q291bnQsICIgZnJvbSAiLCAqdGhpcyk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5ld1BhZ2VD
b3VudCA+IFBhZ2VDb3VudDo6ZnJvbUJ5dGVzKHNpemUoKSkpOworCisgICAgICAgIGlmIChtYXhp
bXVtKCkgJiYgbmV3UGFnZUNvdW50ID4gbWF4aW11bSgpKQorICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpXb3VsZEV4Y2VlZE1heGltdW0pOworCisgICAg
ICAgIHNpemVfdCBkZXNpcmVkU2l6ZSA9IG5ld1BhZ2VDb3VudC5ieXRlcygpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVChkZXNpcmVkU2l6ZSA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChkZXNpcmVkU2l6ZSA+IHNpemUoKSk7CisKKyAgICAgICAgLy8g
SWYgdGhlIG1lbW9yeSBpcyBNZW1vcnlTaGFyaW5nTW9kZTo6U2hhcmVkLCB3ZSBhbHJlYWR5IGFs
bG9jYXRlZCBlbm91Z2ggdmlydHVhbCBhZGRyZXNzIHNwYWNlIGV2ZW4gaWYgdGhlIG1lbW9yeSBp
cyBib3VuZC1jaGVja2luZyBtb2RlLiBXZSBwZXJmb3JtIG1wcm90ZWN0IHRvIGV4dGVuZC4KKyAg
ICAgICAgc2l6ZV90IGV4dHJhQnl0ZXMgPSBkZXNpcmVkU2l6ZSAtIHNpemUoKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoZXh0cmFCeXRlcyk7CisgICAgICAgIGJvb2wgYWxsb2NhdGlvblN1Y2Nl
c3MgPSB0cnlBbGxvY2F0ZSgKKyAgICAgICAgICAgIFsmXSAoKSAtPiBNZW1vcnlSZXN1bHQ6Oktp
bmQgeworICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcnlNYW5hZ2VyKCkudHJ5QWxsb2NhdGVQ
aHlzaWNhbEJ5dGVzKGV4dHJhQnl0ZXMpOworICAgICAgICAgICAgfSwgW10oV2FzbTo6TWVtb3J5
OjpOb3RpZnlQcmVzc3VyZSkgeyB9LCBbXShNZW1vcnk6OlN5bmNUcnlUb1JlY2xhaW0pIHsgfSk7
CisgICAgICAgIGlmICghYWxsb2NhdGlvblN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoR3Jvd0ZhaWxSZWFzb246Ok91dE9mTWVtb3J5KTsKKworICAgICAgICBSRUxF
QVNFX0FTU0VSVChtZW1vcnkoKSk7CisKKyAgICAgICAgLy8gU2lnbmFsaW5nIG1lbW9yeSBtdXN0
IGhhdmUgYmVlbiBwcmUtYWxsb2NhdGVkIHZpcnR1YWxseS4KKyAgICAgICAgdWludDhfdCogc3Rh
cnRBZGRyZXNzID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1lbW9yeSgpKSArIHNpemUoKTsKIAor
ICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiTWFya2luZyBXZWJBc3NlbWJseSBtZW1vcnkn
cyAiLCBSYXdQb2ludGVyKG1lbW9yeSgpKSwgIiBhcyByZWFkK3dyaXRlIGluIHJhbmdlIFsiLCBS
YXdQb2ludGVyKHN0YXJ0QWRkcmVzcyksICIsICIsIFJhd1BvaW50ZXIoc3RhcnRBZGRyZXNzICsg
ZXh0cmFCeXRlcyksICIpIik7CisgICAgICAgIGlmIChtcHJvdGVjdChzdGFydEFkZHJlc3MsIGV4
dHJhQnl0ZXMsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpKSB7CisgICAgICAgICAgICBkYXRhTG9n
KCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHN0cmVycm9yKGVycm5vKSwgIlxuIik7CisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICAgICAgV1RG
OjpzdG9yZVN0b3JlRmVuY2UoKTsgLy8gRW5zdXJlIHN0b3JpbmcgInNpemUiIGhhcHBlbnMgYWZ0
ZXIgbXByb3RlY3QgaXMgZG9uZS4KKyAgICAgICAgbV9oYW5kbGUtPmdyb3dUb1NpemUoZGVzaXJl
ZFNpemUpOworICAgICAgICByZXR1cm4gb2xkUGFnZUNvdW50OworICAgIH0oKSk7CisgICAgaWYg
KHJlc3VsdCkKKyAgICAgICAgbV9ncm93U3VjY2Vzc0NhbGxiYWNrKEdyb3dTdWNjZXNzVGFnLCBv
bGRQYWdlQ291bnQsIG5ld1BhZ2VDb3VudCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworRXhw
ZWN0ZWQ8UGFnZUNvdW50LCBNZW1vcnk6Okdyb3dGYWlsUmVhc29uPiBNZW1vcnk6Omdyb3coUGFn
ZUNvdW50IGRlbHRhKQorewogICAgIGlmICghZGVsdGEuaXNWYWxpZCgpKQogICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoR3Jvd0ZhaWxSZWFzb246OkludmFsaWREZWx0YSk7Ci0gICAgCisK
KyAgICBpZiAoc2hhcmluZ01vZGUoKSA9PSBNZW1vcnlTaGFyaW5nTW9kZTo6U2hhcmVkKQorICAg
ICAgICByZXR1cm4gZ3Jvd1NoYXJlZChkZWx0YSk7CisKKyAgICBjb25zdCBXYXNtOjpQYWdlQ291
bnQgb2xkUGFnZUNvdW50ID0gc2l6ZUluUGFnZXMoKTsKICAgICBjb25zdCBXYXNtOjpQYWdlQ291
bnQgbmV3UGFnZUNvdW50ID0gb2xkUGFnZUNvdW50ICsgZGVsdGE7CiAgICAgaWYgKCFuZXdQYWdl
Q291bnQgfHwgIW5ld1BhZ2VDb3VudC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChHcm93RmFpbFJlYXNvbjo6SW52YWxpZEdyb3dTaXplKTsKQEAgLTM5MSw1MiArNTQz
LDU4IEBAIEV4cGVjdGVkPFBhZ2VDb3VudCwgTWVtb3J5OjpHcm93RmFpbFJlYXNvbj4gTWVtb3J5
Ojpncm93KFBhZ2VDb3VudCBkZWx0YSkKICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MoKTsKIAogICAg
IGRhdGFMb2dMbklmKHZlcmJvc2UsICJNZW1vcnk6Omdyb3coIiwgZGVsdGEsICIpIHRvICIsIG5l
d1BhZ2VDb3VudCwgIiBmcm9tICIsICp0aGlzKTsKLSAgICBSRUxFQVNFX0FTU0VSVChuZXdQYWdl
Q291bnQgPiBQYWdlQ291bnQ6OmZyb21CeXRlcyhtX3NpemUpKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChuZXdQYWdlQ291bnQgPiBQYWdlQ291bnQ6OmZyb21CeXRlcyhzaXplKCkpKTsKIAogICAgIGlm
IChtYXhpbXVtKCkgJiYgbmV3UGFnZUNvdW50ID4gbWF4aW11bSgpKQogICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoR3Jvd0ZhaWxSZWFzb246OldvdWxkRXhjZWVkTWF4aW11bSk7CiAKICAg
ICBzaXplX3QgZGVzaXJlZFNpemUgPSBuZXdQYWdlQ291bnQuYnl0ZXMoKTsKICAgICBSRUxFQVNF
X0FTU0VSVChkZXNpcmVkU2l6ZSA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwotICAgIFJFTEVB
U0VfQVNTRVJUKGRlc2lyZWRTaXplID4gbV9zaXplKTsKLSAgICBzaXplX3QgZXh0cmFCeXRlcyA9
IGRlc2lyZWRTaXplIC0gbV9zaXplOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4dHJhQnl0ZXMpOwot
ICAgIGJvb2wgYWxsb2NhdGlvblN1Y2Nlc3MgPSB0cnlBbGxvY2F0ZSgKLSAgICAgICAgWyZdICgp
IC0+IE1lbW9yeVJlc3VsdDo6S2luZCB7Ci0gICAgICAgICAgICByZXR1cm4gbWVtb3J5TWFuYWdl
cigpLnRyeUFsbG9jYXRlUGh5c2ljYWxCeXRlcyhleHRyYUJ5dGVzKTsKLSAgICAgICAgfSwgbV9u
b3RpZnlNZW1vcnlQcmVzc3VyZSwgbV9zeW5jVHJ5VG9SZWNsYWltTWVtb3J5KTsKLSAgICBpZiAo
IWFsbG9jYXRpb25TdWNjZXNzKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoR3Jvd0Zh
aWxSZWFzb246Ok91dE9mTWVtb3J5KTsKLQorICAgIFJFTEVBU0VfQVNTRVJUKGRlc2lyZWRTaXpl
ID4gc2l6ZSgpKTsKICAgICBzd2l0Y2ggKG1vZGUoKSkgewogICAgIGNhc2UgTWVtb3J5TW9kZTo6
Qm91bmRzQ2hlY2tpbmc6IHsKKyAgICAgICAgYm9vbCBhbGxvY2F0aW9uU3VjY2VzcyA9IHRyeUFs
bG9jYXRlKAorICAgICAgICAgICAgWyZdICgpIC0+IE1lbW9yeVJlc3VsdDo6S2luZCB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG1lbW9yeU1hbmFnZXIoKS50cnlBbGxvY2F0ZVBoeXNpY2FsQnl0
ZXMoZGVzaXJlZFNpemUpOworICAgICAgICAgICAgfSwgbV9ub3RpZnlNZW1vcnlQcmVzc3VyZSwg
bV9zeW5jVHJ5VG9SZWNsYWltTWVtb3J5KTsKKyAgICAgICAgaWYgKCFhbGxvY2F0aW9uU3VjY2Vz
cykKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChHcm93RmFpbFJlYXNvbjo6T3V0
T2ZNZW1vcnkpOworCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1heGltdW0oKS5ieXRlcygpICE9
IDApOwogCiAgICAgICAgIHZvaWQqIG5ld01lbW9yeSA9IEdpZ2FjYWdlOjp0cnlBbGxvY2F0ZVpl
cm9lZFZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBkZXNpcmVkU2l6ZSk7CiAgICAg
ICAgIGlmICghbmV3TWVtb3J5KQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEdy
b3dGYWlsUmVhc29uOjpPdXRPZk1lbW9yeSk7CiAKLSAgICAgICAgbWVtY3B5KG5ld01lbW9yeSwg
bWVtb3J5KCksIG1fc2l6ZSk7Ci0gICAgICAgIGlmIChtX21lbW9yeSkKLSAgICAgICAgICAgIEdp
Z2FjYWdlOjpmcmVlVmlydHVhbFBhZ2VzKEdpZ2FjYWdlOjpQcmltaXRpdmUsIG1lbW9yeSgpLCBt
X3NpemUpOwotICAgICAgICBtX21lbW9yeSA9IENhZ2VkTWVtb3J5KG5ld01lbW9yeSwgZGVzaXJl
ZFNpemUpOwotICAgICAgICBtX21hcHBlZENhcGFjaXR5ID0gZGVzaXJlZFNpemU7Ci0gICAgICAg
IG1fc2l6ZSA9IGRlc2lyZWRTaXplOworICAgICAgICBtZW1jcHkobmV3TWVtb3J5LCBtZW1vcnko
KSwgc2l6ZSgpKTsKKyAgICAgICAgYXV0byBuZXdIYW5kbGUgPSBhZG9wdFJlZigqbmV3IE1lbW9y
eUhhbmRsZShuZXdNZW1vcnksIGRlc2lyZWRTaXplLCBkZXNpcmVkU2l6ZSwgaW5pdGlhbCgpLCBt
YXhpbXVtKCksIHNoYXJpbmdNb2RlKCksIE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSk7Cisg
ICAgICAgIG1faGFuZGxlID0gV1RGTW92ZShuZXdIYW5kbGUpOworCiAgICAgICAgIEFTU0VSVCht
ZW1vcnkoKSA9PSBuZXdNZW1vcnkpOwogICAgICAgICByZXR1cm4gc3VjY2VzcygpOwogICAgIH0K
ICAgICBjYXNlIE1lbW9yeU1vZGU6OlNpZ25hbGluZzogeworICAgICAgICBzaXplX3QgZXh0cmFC
eXRlcyA9IGRlc2lyZWRTaXplIC0gc2l6ZSgpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChleHRy
YUJ5dGVzKTsKKyAgICAgICAgYm9vbCBhbGxvY2F0aW9uU3VjY2VzcyA9IHRyeUFsbG9jYXRlKAor
ICAgICAgICAgICAgWyZdICgpIC0+IE1lbW9yeVJlc3VsdDo6S2luZCB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG1lbW9yeU1hbmFnZXIoKS50cnlBbGxvY2F0ZVBoeXNpY2FsQnl0ZXMoZXh0cmFC
eXRlcyk7CisgICAgICAgICAgICB9LCBtX25vdGlmeU1lbW9yeVByZXNzdXJlLCBtX3N5bmNUcnlU
b1JlY2xhaW1NZW1vcnkpOworICAgICAgICBpZiAoIWFsbG9jYXRpb25TdWNjZXNzKQorICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpPdXRPZk1lbW9yeSk7
CisKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobWVtb3J5KCkpOworCiAgICAgICAgIC8vIFNpZ25h
bGluZyBtZW1vcnkgbXVzdCBoYXZlIGJlZW4gcHJlLWFsbG9jYXRlZCB2aXJ0dWFsbHkuCi0gICAg
ICAgIHVpbnQ4X3QqIHN0YXJ0QWRkcmVzcyA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtZW1vcnko
KSkgKyBtX3NpemU7CisgICAgICAgIHVpbnQ4X3QqIHN0YXJ0QWRkcmVzcyA9IHN0YXRpY19jYXN0
PHVpbnQ4X3QqPihtZW1vcnkoKSkgKyBzaXplKCk7CiAgICAgICAgIAogICAgICAgICBkYXRhTG9n
TG5JZih2ZXJib3NlLCAiTWFya2luZyBXZWJBc3NlbWJseSBtZW1vcnkncyAiLCBSYXdQb2ludGVy
KG1lbW9yeSgpKSwgIiBhcyByZWFkK3dyaXRlIGluIHJhbmdlIFsiLCBSYXdQb2ludGVyKHN0YXJ0
QWRkcmVzcyksICIsICIsIFJhd1BvaW50ZXIoc3RhcnRBZGRyZXNzICsgZXh0cmFCeXRlcyksICIp
Iik7CiAgICAgICAgIGlmIChtcHJvdGVjdChzdGFydEFkZHJlc3MsIGV4dHJhQnl0ZXMsIFBST1Rf
UkVBRCB8IFBST1RfV1JJVEUpKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJtcHJvdGVjdCBmYWls
ZWQ6ICIsIHN0cmVycm9yKGVycm5vKSwgIlxuIik7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgICAgIG1fbWVtb3J5LnJlY2FnZShtX3Np
emUsIGRlc2lyZWRTaXplKTsKLSAgICAgICAgbV9zaXplID0gZGVzaXJlZFNpemU7CisKKyAgICAg
ICAgbV9oYW5kbGUtPmdyb3dUb1NpemUoZGVzaXJlZFNpemUpOwogICAgICAgICByZXR1cm4gc3Vj
Y2VzcygpOwogICAgIH0KICAgICB9CkBAIC00NTksNyArNjE3LDggQEAgdm9pZCBNZW1vcnk6OnJl
Z2lzdGVySW5zdGFuY2UoSW5zdGFuY2UqIGluc3RhbmNlKQogCiB2b2lkIE1lbW9yeTo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAogewotICAgIG91dC5wcmludCgiTWVtb3J5IGF0ICIsIFJh
d1BvaW50ZXIobWVtb3J5KCkpLCAiLCBzaXplICIsIG1fc2l6ZSwgIkIgY2FwYWNpdHkgIiwgbV9t
YXBwZWRDYXBhY2l0eSwgIkIsIGluaXRpYWwgIiwgbV9pbml0aWFsLCAiIG1heGltdW0gIiwgbV9t
YXhpbXVtLCAiIG1vZGUgIiwgbWFrZVN0cmluZyhtX21vZGUpKTsKKyAgICBhdXRvIGhhbmRsZSA9
IG1faGFuZGxlLmNvcHlSZWYoKTsKKyAgICBvdXQucHJpbnQoIk1lbW9yeSBhdCAiLCBSYXdQb2lu
dGVyKGhhbmRsZS0+bWVtb3J5KCkpLCAiLCBzaXplICIsIGhhbmRsZS0+c2l6ZSgpLCAiQiBjYXBh
Y2l0eSAiLCBoYW5kbGUtPm1hcHBlZENhcGFjaXR5KCksICJCLCBpbml0aWFsICIsIGhhbmRsZS0+
aW5pdGlhbCgpLCAiIG1heGltdW0gIiwgaGFuZGxlLT5tYXhpbXVtKCksICIgbW9kZSAiLCBtYWtl
U3RyaW5nKGhhbmRsZS0+bW9kZSgpKSwgIiBzaGFyaW5nTW9kZSAiLCBtYWtlU3RyaW5nKGhhbmRs
ZS0+c2hhcmluZ01vZGUoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21NZW1vcnkuaAppbmRleCA5NjcwODM4ZjE3MTFmODJlN2JiNGUxNWJm
OGI1ZGQzYjg0ODI2YjUxLi4wMWUyZDQ2ZjBhNDY2ZmU4ZjdkMmZhZTlmMjg3NzE0ZWNkZmNmZDYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5oCkBAIC00NCwzOSArNDQs
ODAgQEAgY2xhc3MgUHJpbnRTdHJlYW07CiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CisKIG5hbWVzcGFjZSBXYXNtIHsKIAogY2xhc3MgSW5zdGFuY2U7
CiAKLWNsYXNzIE1lbW9yeSA6IHB1YmxpYyBSZWZDb3VudGVkPE1lbW9yeT4geworY2xhc3MgTWVt
b3J5SGFuZGxlIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1lbW9yeUhhbmRs
ZT4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lbW9yeUhhbmRsZSk7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CisgICAgZnJpZW5kIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK3B1
YmxpYzoKKyAgICBNZW1vcnlIYW5kbGUodm9pZCosIHNpemVfdCBzaXplLCBzaXplX3QgbWFwcGVk
Q2FwYWNpdHksIFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgTWVtb3J5U2hh
cmluZ01vZGUsIE1lbW9yeU1vZGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIH5NZW1vcnlIYW5k
bGUoKTsKKworICAgIHZvaWQqIG1lbW9yeSgpIGNvbnN0IHsgQVNTRVJUKG1fbWVtb3J5LmdldE1h
eUJlTnVsbChtX21hcHBlZENhcGFjaXR5KSA9PSBtX21lbW9yeS5nZXRVbnNhZmUoKSk7IHJldHVy
biBtX21lbW9yeS5nZXRNYXlCZU51bGwobV9tYXBwZWRDYXBhY2l0eSk7IH0KKyAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIHNpemVfdCBtYXBwZWRDYXBhY2l0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwcGVkQ2FwYWNpdHk7IH0KKyAgICBQYWdlQ291bnQgaW5p
dGlhbCgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbDsgfQorICAgIFBhZ2VDb3VudCBtYXhpbXVt
KCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtOyB9CisgICAgTWVtb3J5U2hhcmluZ01vZGUgc2hh
cmluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3NoYXJpbmdNb2RlOyB9CisgICAgTWVtb3J5TW9k
ZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZlNpemUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTWVtb3J5SGFuZGxlLCBtX3Np
emUpOyB9CisgICAgTG9jayYgbG9jaygpIHsgcmV0dXJuIG1fbG9jazsgfQorCisgICAgdm9pZCBn
cm93VG9TaXplKHNpemVfdCBzaXplKQorICAgIHsKKyAgICAgICAgbV9zaXplID0gc2l6ZTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgdXNpbmcgQ2FnZWRNZW1vcnkgPSBDYWdlZFB0cjxHaWdhY2Fn
ZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47CisgICAgQ2FnZWRNZW1vcnkgbV9tZW1v
cnk7CisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKKyAgICBzaXplX3QgbV9tYXBwZWRDYXBhY2l0
eSB7IDAgfTsKKyAgICBQYWdlQ291bnQgbV9pbml0aWFsOworICAgIFBhZ2VDb3VudCBtX21heGlt
dW07CisgICAgTWVtb3J5U2hhcmluZ01vZGUgbV9zaGFyaW5nTW9kZSB7IE1lbW9yeVNoYXJpbmdN
b2RlOjpEZWZhdWx0IH07CisgICAgTWVtb3J5TW9kZSBtX21vZGUgeyBNZW1vcnlNb2RlOjpCb3Vu
ZHNDaGVja2luZyB9OworICAgIExvY2sgbV9sb2NrOworfTsKKworY2xhc3MgTWVtb3J5IGZpbmFs
IDogcHVibGljIFJlZkNvdW50ZWQ8TWVtb3J5PiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
TWVtb3J5KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBmcmllbmQgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogcHVibGljOgogICAgIHZvaWQgZHVtcChXVEY6OlByaW50U3RyZWFt
JikgY29uc3Q7CiAKLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4g
ISFtX21lbW9yeTsgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVy
biAhIW1faGFuZGxlLT5tZW1vcnkoKTsgfQogICAgIAogICAgIGVudW0gTm90aWZ5UHJlc3N1cmUg
eyBOb3RpZnlQcmVzc3VyZVRhZyB9OwogICAgIGVudW0gU3luY1RyeVRvUmVjbGFpbSB7IFN5bmNU
cnlUb1JlY2xhaW1UYWcgfTsKICAgICBlbnVtIEdyb3dTdWNjZXNzIHsgR3Jvd1N1Y2Nlc3NUYWcg
fTsKIAogICAgIHN0YXRpYyBSZWY8TWVtb3J5PiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUmVmUHRy
PE1lbW9yeT4gdHJ5Q3JlYXRlKFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwg
V1RGOjpGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3Vy
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xh
aW1NZW1vcnksIFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdl
Q291bnQpPiYmIGdyb3dTdWNjZXNzQ2FsbGJhY2spOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWY8TWVtb3J5PiBjcmVhdGUoUmVmPE1lbW9yeUhhbmRsZT4mJiwgV1RGOjpGdW5jdGlv
bjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgV1RGOjpGdW5j
dGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdU
Rjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdy
b3dTdWNjZXNzQ2FsbGJhY2spOworICAgIHN0YXRpYyBSZWZQdHI8TWVtb3J5PiB0cnlDcmVhdGUo
UGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBNZW1vcnlTaGFyaW5nTW9kZSwg
V1RGOjpGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3Vy
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xh
aW1NZW1vcnksIFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdl
Q291bnQpPiYmIGdyb3dTdWNjZXNzQ2FsbGJhY2spOwogCi0gICAgfk1lbW9yeSgpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIH5NZW1vcnkoKTsKIAogICAgIHN0YXRpYyBzaXplX3QgZmFzdE1hcHBl
ZFJlZHpvbmVCeXRlcygpOwogICAgIHN0YXRpYyBzaXplX3QgZmFzdE1hcHBlZEJ5dGVzKCk7IC8v
IEluY2x1ZGVzIHJlZHpvbmUuCi0gICAgc3RhdGljIGJvb2wgYWRkcmVzc0lzSW5BY3RpdmVGYXN0
TWVtb3J5KHZvaWQqKTsKLQotICAgIHZvaWQqIG1lbW9yeSgpIGNvbnN0IHsgQVNTRVJUKG1fbWVt
b3J5LmdldE1heUJlTnVsbChzaXplKCkpID09IG1fbWVtb3J5LmdldFVuc2FmZSgpKTsgcmV0dXJu
IG1fbWVtb3J5LmdldE1heUJlTnVsbChzaXplKCkpOyB9Ci0gICAgc2l6ZV90IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX3NpemU7IH0KLSAgICBQYWdlQ291bnQgc2l6ZUluUGFnZXMoKSBjb25zdCB7
IHJldHVybiBQYWdlQ291bnQ6OmZyb21CeXRlcyhtX3NpemUpOyB9CisgICAgc3RhdGljIGJvb2wg
YWRkcmVzc0lzSW5BY3RpdmVHcm93YWJsZU1lbW9yeSh2b2lkKik7CiAKLSAgICBQYWdlQ291bnQg
aW5pdGlhbCgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbDsgfQotICAgIFBhZ2VDb3VudCBtYXhp
bXVtKCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtOyB9CisgICAgdm9pZCogbWVtb3J5KCkgY29u
c3QgeyByZXR1cm4gbV9oYW5kbGUtPm1lbW9yeSgpOyB9CisgICAgc2l6ZV90IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX2hhbmRsZS0+c2l6ZSgpOyB9CisgICAgUGFnZUNvdW50IHNpemVJblBhZ2Vz
KCkgY29uc3QgeyByZXR1cm4gUGFnZUNvdW50Ojpmcm9tQnl0ZXMoc2l6ZSgpKTsgfQorICAgIHNp
emVfdCBib3VuZHNDaGVja2luZ1NpemUoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZS0+bWFwcGVk
Q2FwYWNpdHkoKTsgfQorICAgIFBhZ2VDb3VudCBpbml0aWFsKCkgY29uc3QgeyByZXR1cm4gbV9o
YW5kbGUtPmluaXRpYWwoKTsgfQorICAgIFBhZ2VDb3VudCBtYXhpbXVtKCkgY29uc3QgeyByZXR1
cm4gbV9oYW5kbGUtPm1heGltdW0oKTsgfQorICAgIE1lbW9yeUhhbmRsZSYgaGFuZGxlKCkgeyBy
ZXR1cm4gbV9oYW5kbGUuZ2V0KCk7IH0KIAotICAgIE1lbW9yeU1vZGUgbW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbW9kZTsgfQorICAgIE1lbW9yeVNoYXJpbmdNb2RlIHNoYXJpbmdNb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9oYW5kbGUtPnNoYXJpbmdNb2RlKCk7IH0KKyAgICBNZW1vcnlNb2RlIG1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZS0+bW9kZSgpOyB9CiAKICAgICBlbnVtIGNsYXNz
IEdyb3dGYWlsUmVhc29uIHsKICAgICAgICAgSW52YWxpZERlbHRhLApAQCAtODksMjEgKzEzMCwx
NiBAQCBjbGFzcyBNZW1vcnkgOiBwdWJsaWMgUmVmQ291bnRlZDxNZW1vcnk+IHsKIAogICAgIHZv
aWQgY2hlY2soKSB7ICBBU1NFUlQoIWRlbGV0aW9uSGFzQmVndW4oKSk7IH0KIAotICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNZW1vcnkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTWVt
b3J5LCBtX21lbW9yeSk7IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2l6ZSgpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihNZW1vcnksIG1fc2l6ZSk7IH0KKyAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mSGFuZGxlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1lbW9yeSwg
bV9oYW5kbGUpOyB9CiAKIHByaXZhdGU6CiAgICAgTWVtb3J5KCk7Ci0gICAgTWVtb3J5KHZvaWQq
IG1lbW9yeSwgUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBzaXplX3QgbWFw
cGVkQ2FwYWNpdHksIE1lbW9yeU1vZGUsIFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3Vy
ZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9S
ZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jv
d1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKTsK
LSAgICBNZW1vcnkoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9y
eSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+
JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayk7CisgICAgTWVtb3J5KFJlZjxNZW1vcnlIYW5kbGU+JiYs
IFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1
cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNs
YWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFn
ZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBNZW1vcnkoUGFnZUNvdW50IGlu
aXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBNZW1vcnlTaGFyaW5nTW9kZSwgV1RGOjpGdW5jdGlv
bjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgV1RGOjpGdW5j
dGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdU
Rjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdy
b3dTdWNjZXNzQ2FsbGJhY2spOwogCi0gICAgdXNpbmcgQ2FnZWRNZW1vcnkgPSBDYWdlZFB0cjxH
aWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47Ci0gICAgQ2FnZWRNZW1vcnkg
bV9tZW1vcnk7Ci0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLSAgICBQYWdlQ291bnQgbV9pbml0
aWFsOwotICAgIFBhZ2VDb3VudCBtX21heGltdW07Ci0gICAgc2l6ZV90IG1fbWFwcGVkQ2FwYWNp
dHkgeyAwIH07Ci0gICAgTWVtb3J5TW9kZSBtX21vZGUgeyBNZW1vcnlNb2RlOjpCb3VuZHNDaGVj
a2luZyB9OworICAgIEV4cGVjdGVkPFBhZ2VDb3VudCwgR3Jvd0ZhaWxSZWFzb24+IGdyb3dTaGFy
ZWQoUGFnZUNvdW50KTsKKworICAgIFJlZjxNZW1vcnlIYW5kbGU+IG1faGFuZGxlOwogICAgIFdU
Rjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+IG1fbm90aWZ5TWVtb3J5UHJlc3N1cmU7
CiAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiBtX3N5bmNUcnlUb1Jl
Y2xhaW1NZW1vcnk7CiAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291
bnQsIFBhZ2VDb3VudCk+IG1fZ3Jvd1N1Y2Nlc3NDYWxsYmFjazsKQEAgLTExOSw3ICsxNTUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogY2xhc3MgTWVtb3J5IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgc2l6ZV90IG1heEZhc3RNZW1vcnlDb3VudCgpIHsgcmV0dXJuIDA7IH0K
LSAgICBzdGF0aWMgYm9vbCBhZGRyZXNzSXNJbkFjdGl2ZUZhc3RNZW1vcnkodm9pZCopIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGJvb2wgYWRkcmVzc0lzSW5BY3RpdmVHcm93YWJsZU1l
bW9yeSh2b2lkKikgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpXYXNtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5
SW5mb3JtYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUlu
Zm9ybWF0aW9uLmNwcAppbmRleCA2YjRjMmQxZmQ3Mzg0ZDdkY2EzMDMxOGQ3MmMxZjU2MTE5ZjVm
NTYwLi5mMmM2ZmE1MDg5ODhjMGM0OTA4MDM3MTgzMjE2ODcxZTg1NDBjZmUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAK
QEAgLTQyLDE5ICs0MiwxOSBAQCBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8mIFBpbm5lZFJlZ2lz
dGVySW5mbzo6Z2V0KCkKICAgICAgICAgaWYgKCFDb250ZXh0Ojp1c2VGYXN0VExTKCkpCiAgICAg
ICAgICAgICArK251bWJlck9mUGlubmVkUmVnaXN0ZXJzOwogICAgICAgICBHUFJSZWcgYmFzZU1l
bW9yeVBvaW50ZXIgPSBHUFJJbmZvOjpyZWdDUzM7Ci0gICAgICAgIEdQUlJlZyBzaXplUmVnaXN0
ZXIgPSBHUFJJbmZvOjpyZWdDUzQ7CisgICAgICAgIEdQUlJlZyBib3VuZHNDaGVja2luZ1NpemVS
ZWdpc3RlciA9IEdQUkluZm86OnJlZ0NTNDsKICAgICAgICAgR1BSUmVnIHdhc21Db250ZXh0SW5z
dGFuY2VQb2ludGVyID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgaWYgKCFDb250ZXh0Ojp1c2VG
YXN0VExTKCkpCiAgICAgICAgICAgICB3YXNtQ29udGV4dEluc3RhbmNlUG9pbnRlciA9IEdQUklu
Zm86OnJlZ0NTMDsKIAotICAgICAgICBzdGF0aWNQaW5uZWRSZWdpc3RlckluZm8uY29uc3RydWN0
KHNpemVSZWdpc3RlciwgYmFzZU1lbW9yeVBvaW50ZXIsIHdhc21Db250ZXh0SW5zdGFuY2VQb2lu
dGVyKTsKKyAgICAgICAgc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvLmNvbnN0cnVjdChib3VuZHND
aGVja2luZ1NpemVSZWdpc3RlciwgYmFzZU1lbW9yeVBvaW50ZXIsIHdhc21Db250ZXh0SW5zdGFu
Y2VQb2ludGVyKTsKICAgICB9KTsKIAogICAgIHJldHVybiBzdGF0aWNQaW5uZWRSZWdpc3Rlcklu
Zm8uZ2V0KCk7CiB9CiAKLVBpbm5lZFJlZ2lzdGVySW5mbzo6UGlubmVkUmVnaXN0ZXJJbmZvKEdQ
UlJlZyBzaXplUmVnaXN0ZXIsIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlciwgR1BSUmVnIHdhc21D
b250ZXh0SW5zdGFuY2VQb2ludGVyKQotICAgIDogc2l6ZVJlZ2lzdGVyKHNpemVSZWdpc3RlcikK
K1Bpbm5lZFJlZ2lzdGVySW5mbzo6UGlubmVkUmVnaXN0ZXJJbmZvKEdQUlJlZyBib3VuZHNDaGVj
a2luZ1NpemVSZWdpc3RlciwgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyLCBHUFJSZWcgd2FzbUNv
bnRleHRJbnN0YW5jZVBvaW50ZXIpCisgICAgOiBib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcihi
b3VuZHNDaGVja2luZ1NpemVSZWdpc3RlcikKICAgICAsIGJhc2VNZW1vcnlQb2ludGVyKGJhc2VN
ZW1vcnlQb2ludGVyKQogICAgICwgd2FzbUNvbnRleHRJbnN0YW5jZVBvaW50ZXIod2FzbUNvbnRl
eHRJbnN0YW5jZVBvaW50ZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oCmluZGV4IDRiOGVmOGU4YmM3YWM3ZWZjOWE3OTk0OTRl
MjY4OTFmYThkZDYyOWYuLjIzYTg2NTMwYmFlMTBmZGY3ZTBkNDJlMzVhYjkwNzdiYjczZGY2NWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1h
dGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1h
dGlvbi5oCkBAIC0zOSw3ICszOSw3IEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20g
ewogCiBzdHJ1Y3QgUGlubmVkU2l6ZVJlZ2lzdGVySW5mbyB7Ci0gICAgR1BSUmVnIHNpemVSZWdp
c3RlcjsKKyAgICBHUFJSZWcgYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXI7CiAgICAgdW5zaWdu
ZWQgc2l6ZU9mZnNldDsKIH07CiAKQEAgLTU2LDExICs1NiwxMSBAQCBjbGFzcyBQaW5uZWRSZWdp
c3RlckluZm8gewogICAgICAgICBpZiAod2FzbUNvbnRleHRJbnN0YW5jZVBvaW50ZXIgIT0gSW52
YWxpZEdQUlJlZykKICAgICAgICAgICAgIHJlc3VsdC5zZXQod2FzbUNvbnRleHRJbnN0YW5jZVBv
aW50ZXIpOwogICAgICAgICBpZiAobW9kZSAhPSBNZW1vcnlNb2RlOjpTaWduYWxpbmcpCi0gICAg
ICAgICAgICByZXN1bHQuc2V0KHNpemVSZWdpc3Rlcik7CisgICAgICAgICAgICByZXN1bHQuc2V0
KGJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKLSAgICBHUFJSZWcgc2l6ZVJlZ2lzdGVyOworICAgIEdQUlJlZyBib3VuZHNDaGVja2lu
Z1NpemVSZWdpc3RlcjsKICAgICBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXI7CiAgICAgR1BSUmVn
IHdhc21Db250ZXh0SW5zdGFuY2VQb2ludGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlNb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21NZW1vcnlNb2RlLmNwcAppbmRleCBiMWJjOTg1ZGQ3NmJiZmZiNWQyYmI1YTNk
MTA4YzA2N2E0NzM3NzJkLi45YWQ4ZjgwYjZhYTIyYmZmMDMyYmRkNDZkMTc4NmVmY2RlZjNjYzQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5TW9kZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeU1vZGUuY3BwCkBA
IC00Miw2ICs0MiwxNiBAQCBjb25zdCBjaGFyKiBtYWtlU3RyaW5nKE1lbW9yeU1vZGUgbW9kZSkK
ICAgICByZXR1cm4gIiI7CiB9CiAKK2NvbnN0IGNoYXIqIG1ha2VTdHJpbmcoTWVtb3J5U2hhcmlu
Z01vZGUgc2hhcmluZ01vZGUpCit7CisgICAgc3dpdGNoIChzaGFyaW5nTW9kZSkgeworICAgIGNh
c2UgTWVtb3J5U2hhcmluZ01vZGU6OkRlZmF1bHQ6IHJldHVybiAiRGVmYXVsdCI7CisgICAgY2Fz
ZSBNZW1vcnlTaGFyaW5nTW9kZTo6U2hhcmVkOiByZXR1cm4gIlNoYXJlZCI7CisgICAgfQorICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuICIiOworfQorCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6V2FzbQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeU1vZGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlNb2RlLmgKaW5kZXggYzAzODc0
NmQ2MWQ0MmE5NTNjY2Y0YjVkMGZiMjA3NWU5MjY1NDFmOC4uNTFiMjEzMzZjODk0NmJkZWI4N2Nm
MTM5NWFkOTk3NTMxMzUxNTgyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1lbW9yeU1vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TWVtb3J5TW9kZS5oCkBAIC00MCw2ICs0MCwxMyBAQCBlbnVtIGNsYXNzIE1lbW9yeU1vZGUgOiB1
aW50OF90IHsKIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IE51bWJlck9mTWVtb3J5TW9kZXMgPSAy
OwogSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgY2hhciogbWFrZVN0cmluZyhNZW1vcnlNb2RlKTsK
IAorZW51bSBjbGFzcyBNZW1vcnlTaGFyaW5nTW9kZSA6IHVpbnQ4X3QgeworICAgIERlZmF1bHQs
CisgICAgU2hhcmVkLAorfTsKKworSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgY2hhciogbWFrZVN0
cmluZyhNZW1vcnlTaGFyaW5nTW9kZSk7CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCiAK
ICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1RvV2FzbS5jcHAKaW5kZXggZDhkMTUyMTRkNDBmMGE4NWMzMWYyYTJiMjkyZjgzNWQz
ZjM2OWQ2Ni4uYmU5NDg3NGE1YTRiNDU3ZDIzMmVmZDg4ZDc3OWQxYmIzZDliM2ZkMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcApAQCAtMjIxLDcgKzIyMSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiBjcmVhdGVKU1RvV2FzbVdyYXBw
ZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0CiAKICAgICBpZiAoISFpbmZvLm1lbW9yeSkgewog
ICAgICAgICBHUFJSZWcgYmFzZU1lbW9yeSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7
Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoT3JTaXplID0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCku
cHJvbG9ndWVTY3JhdGNoR1BSc1swXTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hPckJvdW5kc0No
ZWNraW5nU2l6ZSA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpLnByb2xvZ3VlU2NyYXRjaEdQUnNb
MF07CiAKICAgICAgICAgaWYgKENvbnRleHQ6OnVzZUZhc3RUTFMoKSkKICAgICAgICAgICAgIGpp
dC5sb2FkV2FzbUNvbnRleHRJbnN0YW5jZShiYXNlTWVtb3J5KTsKQEAgLTIyOSwxNSArMjI5LDE1
IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiBjcmVhdGVKU1RvV2FzbVdyYXBw
ZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0CiAgICAgICAgIEdQUlJlZyBjdXJyZW50SW5zdGFu
Y2VHUFIgPSBDb250ZXh0Ojp1c2VGYXN0VExTKCkgPyBiYXNlTWVtb3J5IDogd2FzbUNvbnRleHRJ
bnN0YW5jZUdQUjsKICAgICAgICAgaWYgKGlzQVJNNjRFKCkpIHsKICAgICAgICAgICAgIGlmICht
b2RlICE9IFdhc206Ok1lbW9yeU1vZGU6OlNpZ25hbGluZykKLSAgICAgICAgICAgICAgICBzY3Jh
dGNoT3JTaXplID0gcGlubmVkUmVncy5zaXplUmVnaXN0ZXI7Ci0gICAgICAgICAgICBqaXQubG9h
ZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY3VycmVudEluc3RhbmNlR1BSLCBXYXNtOjpJbnN0
YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCBzY3JhdGNoT3JTaXplKTsKKyAgICAg
ICAgICAgICAgICBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUgPSBwaW5uZWRSZWdzLmJvdW5k
c0NoZWNraW5nU2l6ZVJlZ2lzdGVyOworICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKGN1cnJlbnRJbnN0YW5jZUdQUiwgV2FzbTo6SW5zdGFuY2U6Om9mZnNldE9m
Q2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkpLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKG1vZGUgIT0gV2FzbTo6TWVtb3J5
TW9kZTo6U2lnbmFsaW5nKQotICAgICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QWRkcmVzcyhjdXJyZW50SW5zdGFuY2VHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNh
Y2hlZE1lbW9yeVNpemUoKSksIHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyKTsKKyAgICAgICAgICAg
ICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY3VycmVudEluc3RhbmNlR1BS
LCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSksIHBp
bm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIpOwogICAgICAgICB9CiAKICAgICAg
ICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGN1cnJlbnRJbnN0YW5jZUdQUiwg
V2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKLSAg
ICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1v
cnksIHNjcmF0Y2hPclNpemUsIHNjcmF0Y2hPclNpemUpOworICAgICAgICBqaXQuY2FnZUNvbmRp
dGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgc2NyYXRjaE9yQm91bmRz
Q2hlY2tpbmdTaXplLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOwogICAgIH0KIAogICAg
IENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LnRocmVhZFNhZmVQYXRjaGFibGVOZWFyQ2Fs
bCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlJbnN0YW5jZS5jcHAKaW5kZXggNjY5NjFjMjMyYTRlYTRlNDc0ZjY3NzM5MzIzMmNkMWVh
MmVjNGM1OS4uZTQ5ZmM2OTI1YTk5NWU1ZTBhZjU5YmVmM2U2MDIwZmJkNDAzYmEwYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5z
dGFuY2UuY3BwCkBAIC0yOTEsNyArMjkxLDcgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dl
YkFzc2VtYmx5SW5zdGFuY2U6OnRyeUNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KgogICAg
ICAgICAgICAgYXV0byoganNNZW1vcnkgPSBKU1dlYkFzc2VtYmx5TWVtb3J5Ojp0cnlDcmVhdGUo
Z2xvYmFsT2JqZWN0LCB2bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseU1lbW9yeVN0cnVjdHVy
ZSgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgbnVsbHB0
cik7CiAKLSAgICAgICAgICAgIFJlZlB0cjxXYXNtOjpNZW1vcnk+IG1lbW9yeSA9IFdhc206Ok1l
bW9yeTo6dHJ5Q3JlYXRlKG1vZHVsZUluZm9ybWF0aW9uLm1lbW9yeS5pbml0aWFsKCksIG1vZHVs
ZUluZm9ybWF0aW9uLm1lbW9yeS5tYXhpbXVtKCksCisgICAgICAgICAgICBSZWZQdHI8V2FzbTo6
TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OnRyeUNyZWF0ZShtb2R1bGVJbmZvcm1hdGlv
bi5tZW1vcnkuaW5pdGlhbCgpLCBtb2R1bGVJbmZvcm1hdGlvbi5tZW1vcnkubWF4aW11bSgpLCBX
YXNtOjpNZW1vcnlTaGFyaW5nTW9kZTo6RGVmYXVsdCwKICAgICAgICAgICAgICAgICBbJnZtXSAo
V2FzbTo6TWVtb3J5OjpOb3RpZnlQcmVzc3VyZSkgeyB2bS5oZWFwLmNvbGxlY3RBc3luYyhDb2xs
ZWN0aW9uU2NvcGU6OkZ1bGwpOyB9LAogICAgICAgICAgICAgICAgIFsmdm1dIChXYXNtOjpNZW1v
cnk6OlN5bmNUcnlUb1JlY2xhaW0pIHsgdm0uaGVhcC5jb2xsZWN0U3luYyhDb2xsZWN0aW9uU2Nv
cGU6OkZ1bGwpOyB9LAogICAgICAgICAgICAgICAgIFsmdm0sIGpzTWVtb3J5XSAoV2FzbTo6TWVt
b3J5OjpHcm93U3VjY2VzcywgV2FzbTo6UGFnZUNvdW50IG9sZFBhZ2VDb3VudCwgV2FzbTo6UGFn
ZUNvdW50IG5ld1BhZ2VDb3VudCkgeyBqc01lbW9yeS0+Z3Jvd1N1Y2Nlc3NDYWxsYmFjayh2bSwg
b2xkUGFnZUNvdW50LCBuZXdQYWdlQ291bnQpOyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAKaW5kZXggZGZiMDI3MDMx
NjMyZTAzYmUzZjM5YjU4Zjk4YjM2ZTgyZjcyNjIzZi4uZjdhYzY0NDk4MjFiZjEwN2ExNGY3NDhk
MDEyZDFmMjljN2I3M2U4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1
ZGUgIkFycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUg
Ik9iamVjdENvbnN0cnVjdG9yLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC03MiwxNyArNzMs
MzQgQEAgSlNXZWJBc3NlbWJseU1lbW9yeTo6SlNXZWJBc3NlbWJseU1lbW9yeShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogewogfQogCi1KU0FycmF5QnVmZmVyKiBKU1dlYkFzc2VtYmx5
TWVtb3J5OjpidWZmZXIoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNB
cnJheUJ1ZmZlciogSlNXZWJBc3NlbWJseU1lbW9yeTo6YnVmZmVyKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiB7Ci0gICAgaWYgKG1fYnVmZmVyV3JhcHBlcikKLSAgICAgICAgcmV0dXJu
IG1fYnVmZmVyV3JhcHBlci5nZXQoKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBh
dXRvKiB3cmFwcGVyID0gbV9idWZmZXJXcmFwcGVyLmdldCgpOworICAgIGlmICh3cmFwcGVyKSB7
CisgICAgICAgIGlmIChtX21lbW9yeS0+c2hhcmluZ01vZGUoKSA9PSBXYXNtOjpNZW1vcnlTaGFy
aW5nTW9kZTo6RGVmYXVsdCkKKyAgICAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCi0gICAgLy8g
V2UgY2FuJ3QgdXNlIGEgcmVmIGhlcmUgc2luY2UgaXQgZG9lc24ndCBoYXZlIGEgY29weSBjb25z
dHJ1Y3Rvci4uLgotICAgIFJlZjxXYXNtOjpNZW1vcnk+IHByb3RlY3RlZE1lbW9yeSA9IG1fbWVt
b3J5LmdldCgpOwotICAgIGF1dG8gZGVzdHJ1Y3RvciA9IGNyZWF0ZVNoYXJlZFRhc2s8dm9pZCh2
b2lkKik+KFtwcm90ZWN0ZWRNZW1vcnkgPSBXVEZNb3ZlKHByb3RlY3RlZE1lbW9yeSldICh2b2lk
KikgeyB9KTsKKyAgICAgICAgQVNTRVJUKG1fbWVtb3J5LT5zaGFyaW5nTW9kZSgpID09IFdhc206
Ok1lbW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQpOworICAgICAgICAvLyBJZiBTaGFyZWRBcnJheUJ1
ZmZlcidzIHVuZGVybHlpbmcgbWVtb3J5IGlzIG5vdCBncm93biwgd2UgY29udGludWUgdXNpbmcg
Y2FjaGVkIHdyYXBwZXIuCisgICAgICAgIGlmICh3cmFwcGVyLT5pbXBsKCktPmJ5dGVMZW5ndGgo
KSA9PSBtZW1vcnkoKS5zaXplKCkpCisgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICB9
CisKKyAgICBSZWY8V2FzbTo6TWVtb3J5SGFuZGxlPiBwcm90ZWN0ZWRIYW5kbGUgPSBtX21lbW9y
eS0+aGFuZGxlKCk7CisgICAgYXV0byBkZXN0cnVjdG9yID0gY3JlYXRlU2hhcmVkVGFzazx2b2lk
KHZvaWQqKT4oW3Byb3RlY3RlZEhhbmRsZSA9IFdURk1vdmUocHJvdGVjdGVkSGFuZGxlKV0gKHZv
aWQqKSB7IH0pOwogICAgIG1fYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyht
ZW1vcnkoKS5tZW1vcnkoKSwgbWVtb3J5KCkuc2l6ZSgpLCBXVEZNb3ZlKGRlc3RydWN0b3IpKTsK
ICAgICBtX2J1ZmZlci0+bWFrZVdhc21NZW1vcnkoKTsKLSAgICBtX2J1ZmZlcldyYXBwZXIuc2V0
KHZtLCB0aGlzLCBKU0FycmF5QnVmZmVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlC
dWZmZXJTdHJ1Y3R1cmUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCksIG1fYnVmZmVy
LmdldCgpKSk7CisgICAgaWYgKG1fbWVtb3J5LT5zaGFyaW5nTW9kZSgpID09IFdhc206Ok1lbW9y
eVNoYXJpbmdNb2RlOjpTaGFyZWQpCisgICAgICAgIG1fYnVmZmVyLT5tYWtlU2hhcmVkKCk7Cisg
ICAgYXV0byogYXJyYXlCdWZmZXIgPSBKU0FycmF5QnVmZmVyOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobV9idWZmZXItPnNoYXJpbmdNb2RlKCkpLCBtX2J1
ZmZlci5nZXQoKSk7CisgICAgaWYgKG1fbWVtb3J5LT5zaGFyaW5nTW9kZSgpID09IFdhc206Ok1l
bW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQpIHsKKyAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JGcmVl
emUoZ2xvYmFsT2JqZWN0LCBhcnJheUJ1ZmZlcik7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgbV9idWZmZXJXcmFwcGVyLnNldCh2bSwg
dGhpcywgYXJyYXlCdWZmZXIpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fYnVmZmVyV3JhcHBlcik7
CiAgICAgcmV0dXJuIG1fYnVmZmVyV3JhcHBlci5nZXQoKTsKIH0KQEAgLTExNyw3ICsxMzUsOCBA
QCB2b2lkIEpTV2ViQXNzZW1ibHlNZW1vcnk6Omdyb3dTdWNjZXNzQ2FsbGJhY2soVk0mIHZtLCBX
YXNtOjpQYWdlQ291bnQgb2xkUGFnZUNvdQogewogICAgIC8vIFdlIG5lZWQgdG8gY2xlYXIgb3V0
IHRoZSBvbGQgYXJyYXkgYnVmZmVyIGJlY2F1c2UgaXQgbWlnaHQgbm93IGJlIHBvaW50aW5nIHRv
IHN0YWxlIG1lbW9yeS4KICAgICBpZiAobV9idWZmZXIpIHsKLSAgICAgICAgbV9idWZmZXItPmRl
dGFjaCh2bSk7CisgICAgICAgIGlmIChtX21lbW9yeS0+c2hhcmluZ01vZGUoKSA9PSBXYXNtOjpN
ZW1vcnlTaGFyaW5nTW9kZTo6RGVmYXVsdCkKKyAgICAgICAgICAgIG1fYnVmZmVyLT5kZXRhY2go
dm0pOwogICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7CiAgICAgICAgIG1fYnVmZmVyV3JhcHBl
ci5jbGVhcigpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlNZW1vcnkuaAppbmRleCBhYjljNDc0NmIzY2ZhMjUwZDUxZWJjZGY0MmIz
YTVmZGI5YWI1NTVkLi5lNDk0OTAzNjkyZTU5NTQxY2ZhNzkwMzM3NmE0NTMyZjA1NjNhNDQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVt
b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1l
bW9yeS5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKLSNp
bmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAj
aW5jbHVkZSAiV2FzbU1lbW9yeS5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CkBAIC00OSwxNiArNDksMTYgQEAgY2xhc3MgSlNXZWJBc3NlbWJseU1lbW9y
eSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIHZtLndl
YkFzc2VtYmx5TWVtb3J5U3BhY2U8bW9kZT4oKTsKICAgICB9CiAKLSAgICBzdGF0aWMgSlNXZWJB
c3NlbWJseU1lbW9yeSogdHJ5Q3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJ1Y3R1cmUq
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNXZWJBc3NlbWJseU1lbW9yeSogdHJ5
Q3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwog
CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAotICAgIHZvaWQgYWRvcHQoUmVmPFdhc206Ok1l
bW9yeT4mJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZG9wdChSZWY8V2FzbTo6TWVt
b3J5PiYmKTsKICAgICBXYXNtOjpNZW1vcnkmIG1lbW9yeSgpIHsgcmV0dXJuIG1fbWVtb3J5Lmdl
dCgpOyB9Ci0gICAgSlNBcnJheUJ1ZmZlciogYnVmZmVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
KTsKKyAgICBKU0FycmF5QnVmZmVyKiBidWZmZXIoSlNHbG9iYWxPYmplY3QqKTsKICAgICBXYXNt
OjpQYWdlQ291bnQgZ3JvdyhWTSYsIEpTR2xvYmFsT2JqZWN0KiwgdWludDMyX3QgZGVsdGEpOwot
ICAgIHZvaWQgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayhWTSYsIFdhc206OlBhZ2VDb3VudCBvbGRQYWdl
Q291bnQsIFdhc206OlBhZ2VDb3VudCBuZXdQYWdlQ291bnQpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayhWTSYsIFdhc206OlBhZ2VDb3VudCBvbGRQYWdl
Q291bnQsIFdhc206OlBhZ2VDb3VudCBuZXdQYWdlQ291bnQpOwogCiBwcml2YXRlOgogICAgIEpT
V2ViQXNzZW1ibHlNZW1vcnkoVk0mLCBTdHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKaW5kZXggOTkyNzZj
MmQ5ZTYyN2FkMjE1M2RkZmNhNDljNzc4ZTBjNzljODNjYS4uNzhkYTZkYzNmNGVhZWFkM2M4MDBh
ZTQyZWMwZTY4ODE3NjVlNDZlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKQEAgLTM1NywyMCArMzU3LDIwIEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBXZWJBc3NlbWJseUZ1bmN0aW9uOjpq
c0NhbGxFbnRyeXBvaW50U2xvdygpCiAKICAgICBpZiAoISFtb2R1bGVJbmZvcm1hdGlvbi5tZW1v
cnkpIHsKICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQ
b2ludGVyOwotICAgICAgICBHUFJSZWcgc2NyYXRjaE9yU2l6ZSA9IHN0YWNrTGltaXRHUFI7Cisg
ICAgICAgIEdQUlJlZyBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUgPSBzdGFja0xpbWl0R1BS
OwogICAgICAgICBhdXRvIG1vZGUgPSBpbnN0YW5jZSgpLT5tZW1vcnlNb2RlKCk7CiAKICAgICAg
ICAgaWYgKGlzQVJNNjRFKCkpIHsKICAgICAgICAgICAgIGlmIChtb2RlICE9IFdhc206Ok1lbW9y
eU1vZGU6OlNpZ25hbGluZykKLSAgICAgICAgICAgICAgICBzY3JhdGNoT3JTaXplID0gcGlubmVk
UmVncy5zaXplUmVnaXN0ZXI7Ci0gICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc2NyYXRjaEdQUiwgV2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5
U2l6ZSgpKSwgc2NyYXRjaE9yU2l6ZSk7CisgICAgICAgICAgICAgICAgc2NyYXRjaE9yQm91bmRz
Q2hlY2tpbmdTaXplID0gcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlcjsKKyAg
ICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBX
YXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSksIHNjcmF0
Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBp
ZiAobW9kZSAhPSBXYXNtOjpNZW1vcnlNb2RlOjpTaWduYWxpbmcpCi0gICAgICAgICAgICAgICAg
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFdhc206Okluc3Rh
bmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVy
KTsKKyAgICAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2Ny
YXRjaEdQUiwgV2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXpl
KCkpLCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsKICAgICAgICAgfQog
CiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBX
YXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnkoKSksIGJhc2VNZW1vcnkpOwotICAg
ICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9y
eSwgc2NyYXRjaE9yU2l6ZSwgc2NyYXRjaE9yU2l6ZSk7CisgICAgICAgIGppdC5jYWdlQ29uZGl0
aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBzY3JhdGNoT3JCb3VuZHND
aGVja2luZ1NpemUsIHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSk7CiAgICAgfQogCiAgICAg
Ly8gV2UgdXNlIHRoaXMgY2FsbGVlIHRvIGluZGljYXRlIGhvdyB0byB1bndpbmQgcGFzdCB0aGVz
ZSB0eXBlcyBvZiBmcmFtZXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwCmluZGV4IDUwY2Nj
YTI0MWZkNWJlOTc5NTZkZjA4OGI5NGE4ZDhhYjBmZjBkMDUuLjI1NmViMGZmYzM0YWI3MzViYzUz
Mjg3Yzc1ZjZiMDdlYzZiOGY3Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwCkBAIC01
Niw4ICs1Niw2IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RKU1dlYkFzc2Vt
Ymx5TWVtb3J5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSAhPSAxKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIldlYkFzc2VtYmx5Lk1lbW9y
eSBleHBlY3RzIGV4YWN0bHkgb25lIGFyZ3VtZW50Il9zKSkpOwogCiAgICAgSlNPYmplY3QqIG1l
bW9yeURlc2NyaXB0b3I7CiAgICAgewpAQCAtMTAyLDEwICsxMDAsMjMgQEAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlNZW1vcnksIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2IKICAgICAgICAgfQogICAgIH0KIAorICAgIFdhc206Ok1lbW9yeVNoYXJpbmdN
b2RlIHNoYXJpbmdNb2RlID0gV2FzbTo6TWVtb3J5U2hhcmluZ01vZGU6OkRlZmF1bHQ7CisgICAg
SlNWYWx1ZSBzaGFyZWRWYWx1ZSA9IG1lbW9yeURlc2NyaXB0b3ItPmdldChnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaGFyZWQiKSk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBib29sIHNoYXJlZCA9
IHNoYXJlZFZhbHVlLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgaWYgKHNoYXJlZCkgewor
ICAgICAgICBpZiAoIW1heGltdW1QYWdlQ291bnQpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICInbWF4aW11bScgcGFnZSBjb3Vu
dCBtdXN0IGJlIGRlZmluZWQgaWYgJ3NoYXJlZCcgaXMgdHJ1ZSJfcyk7CisgICAgICAgIGlmICgh
T3B0aW9uczo6dXNlU2hhcmVkQXJyYXlCdWZmZXIoKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIlNoYXJlZCBXZWJBc3NlbWJs
eS5NZW1vcnkgYW5kIFNoYXJlZEFycmF5QnVmZmVyIGFyZSBub3QgZW5hYmxlZCJfcyk7CisgICAg
ICAgIHNoYXJpbmdNb2RlID0gV2FzbTo6TWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZDsKKyAgICB9
CisKICAgICBhdXRvKiBqc01lbW9yeSA9IEpTV2ViQXNzZW1ibHlNZW1vcnk6OnRyeUNyZWF0ZShn
bG9iYWxPYmplY3QsIHZtLCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5TWVtb3J5U3RydWN0dXJl
KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKLSAgICBSZWZQdHI8V2FzbTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OnRy
eUNyZWF0ZShpbml0aWFsUGFnZUNvdW50LCBtYXhpbXVtUGFnZUNvdW50LAorICAgIFJlZlB0cjxX
YXNtOjpNZW1vcnk+IG1lbW9yeSA9IFdhc206Ok1lbW9yeTo6dHJ5Q3JlYXRlKGluaXRpYWxQYWdl
Q291bnQsIG1heGltdW1QYWdlQ291bnQsIHNoYXJpbmdNb2RlLAogICAgICAgICBbJnZtXSAoV2Fz
bTo6TWVtb3J5OjpOb3RpZnlQcmVzc3VyZSkgeyB2bS5oZWFwLmNvbGxlY3RBc3luYyhDb2xsZWN0
aW9uU2NvcGU6OkZ1bGwpOyB9LAogICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpTeW5jVHJ5
VG9SZWNsYWltKSB7IHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsg
fSwKICAgICAgICAgWyZ2bSwganNNZW1vcnldIChXYXNtOjpNZW1vcnk6Okdyb3dTdWNjZXNzLCBX
YXNtOjpQYWdlQ291bnQgb2xkUGFnZUNvdW50LCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50
KSB7IGpzTWVtb3J5LT5ncm93U3VjY2Vzc0NhbGxiYWNrKHZtLCBvbGRQYWdlQ291bnQsIG5ld1Bh
Z2VDb3VudCk7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCmluZGV4IGFiNGEyYmZlZWVmYTY4
NDE3YzM4Y2MxOTU0ZTVlOTdmNjJmNjAwOWIuLjdlMjA4YzMxMDFjMjM3MTYzMjI5Y2M1NzkyN2Fl
YTZiOGYwYjI1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVy
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2IKIAogICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkqIG1lbW9y
eSA9IGdldE1lbW9yeShnbG9iYWxPYmplY3QsIHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsg
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUobWVtb3J5LT5idWZmZXIoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxP
YmplY3QpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKG1lbW9yeS0+YnVmZmVyKGdsb2JhbE9iamVjdCkpKTsKIH0KIAogV2ViQXNzZW1ibHlNZW1v
cnlQcm90b3R5cGUqIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmlu
ZGV4IDMxYzIxZTNjNDM3MDJjOTlmYjZmODA5NTRkMGM1ZTQ3N2Q3MGRmN2QuLjlkZDJlN2JmNTIx
ODdmYjM0NWVlZjBlN2Y0ZmEyNjM0NWIyZWE0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTU2
Niw4ICs1NjYsOSBAQCBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIH07CiAKICAgICBhdXRvIGZvckVhY2hT
ZWdtZW50ID0gWyZdIChhdXRvIGZuKSB7Ci0gICAgICAgIHVpbnQ4X3QqIG1lbW9yeSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG1faW5zdGFuY2UtPmluc3RhbmNlKCkuY2FjaGVkTWVtb3J5
KCkpOwotICAgICAgICB1aW50NjRfdCBzaXplSW5CeXRlcyA9IG1faW5zdGFuY2UtPmluc3RhbmNl
KCkuY2FjaGVkTWVtb3J5U2l6ZSgpOworICAgICAgICBhdXRvIHdhc21NZW1vcnkgPSBtX2luc3Rh
bmNlLT5pbnN0YW5jZSgpLm1lbW9yeSgpOworICAgICAgICB1aW50OF90KiBtZW1vcnkgPSByZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QqPih3YXNtTWVtb3J5LT5tZW1vcnkoKSk7CisgICAgICAgIHVp
bnQ2NF90IHNpemVJbkJ5dGVzID0gd2FzbU1lbW9yeS0+c2l6ZSgpOwogCiAgICAgICAgIGZvciAo
Y29uc3QgV2FzbTo6U2VnbWVudDo6UHRyJiBzZWdtZW50IDogZGF0YSkgewogICAgICAgICAgICAg
dWludDMyX3Qgb2Zmc2V0ID0gc2VnbWVudC0+b2Zmc2V0LmlzR2xvYmFsSW1wb3J0KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCmluZGV4IGJlYjAwNjBiYWVhNDM5NGEwNTA0Y2NlZDI2N2U2MjYwMGEzOTZiNzYu
LjExN2RlM2I4MzBjZTI5YzcwMzhhYWE1NGYzYThkYTFkNzIyN2U4MzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQpAQCAtMTU1OSw2ICsxNTU5LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKICAgICB3b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlckNsaWVudC5oCiAgICAgd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorICAg
IHdvcmtlcnMvV29ya2VyVGhyZWFkVHlwZS5oCiAgICAgd29ya2Vycy9Xb3JrZXJUeXBlLmgKIAog
ICAgIHdvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uQ29udGV4dC5jcHAKaW5kZXggOWFjODhlYmZkNzc3OGJkN2QxZDMxMmZjNzYwOGYx
ZWM5YWExMWQzNC4uYTYxY2IwNGU0ZGI5NTU3OTUyNTk0Mzg3MWFlZmE0NDM2MTVlMzVjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlh
bGl6YXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNvbnRleHQuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZv
aWQgSURCU2VyaWFsaXphdGlvbkNvbnRleHQ6OmluaXRpYWxpemVWTSgpCiAgICAgQVNTRVJUKCFt
X2dsb2JhbE9iamVjdCk7CiAgICAgbV92bSA9IEpTQzo6Vk06OmNyZWF0ZSgpOwogICAgIG1fdm0t
PmhlYXAuYWNxdWlyZUFjY2VzcygpOwotICAgIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29y
bGQobV92bS5nZXQoKSk7CisgICAgSlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZChtX3Zt
LmdldCgpLCBXb3JrZXJUaHJlYWRUeXBlOjpXb3JrbGV0KTsKIAogICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2tlcihtX3ZtLmdldCgpKTsKICAgICBtX2dsb2JhbE9iamVjdC5zZXQoKm1fdm0sIEpT
SURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdDo6Y3JlYXRlKCptX3ZtLCBKU0lEQlNlcmlhbGl6
YXRpb25HbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwgSlNDOjpqc051bGwoKSks
IG5vcm1hbFdvcmxkKCptX3ZtKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI4N2ZjY2Q4MDRiYTk4NTJlNDBkMGY4NzdhMWUz
ZmI4MjY3MjYwNGMuLjFjZWVjNTM5Mzc2NDIwZjk4NzU0NWQyN2MyMTJhM2FiZTFlZWU1YWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTUwMDcsNiArNTAwNyw3IEBACiAJCUUzOTYyOEMxMjM5NTc0MzEwMDY1OEVDRCAvKiBNb3Rp
b25NYW5hZ2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzk2MjhDMDIzOTU3NDMwMDA2NThFQ0QgLyogTW90aW9uTWFuYWdlckNsaWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzQTc3
NjY3MURDODVEMjgwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E3NzY2NTFEQzg1RDIyMDBCNjkwRDgg
LyogRE9NSklUSURMQ29udmVydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUUzQTc3NjY4MURDODVEMjgwMEI2OTBEOCAvKiBET01KSVRJRExUeXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E3NzY2
NjFEQzg1RDIyMDBCNjkwRDggLyogRE9NSklUSURMVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzQUZEN0FEMjU1RjUwRUIwMEU1RTMwRSAv
KiBXb3JrZXJUaHJlYWRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFM0FGRDdBQjI1NUY1MERDMDBFNUUzMEUgLyogV29ya2VyVGhyZWFkVHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzQjJG
MEVEMUQ3RjRDQTMwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCMkYwRTcxRDdGMzVFQzAwQjBDOUQxIC8q
IExvYWRhYmxlU2NyaXB0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTNCMkYwRUUxRDdGNENBOTAwQjBDOUQxIC8qIExvYWRhYmxlU2NyaXB0Q2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0Iy
RjBFODFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVTY3JpcHRDbGllbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0IyRjBGMDFEN0Y0Q0I1
MDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0IyRjBFNDFEN0YzNUVDMDBCMEM5RDEgLyogTG9h
ZGFibGVDbGFzc2ljU2NyaXB0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTE2MDI1LDYgKzE2MDI2LDcgQEAKIAkJRTNBNzc2NjYxREM4NUQyMjAw
QjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NSklUSURMVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0FFNkNE
MTIyNTJGMjcwMDBDNzBCNTAgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQUZBOTY0MURBNkU5MDgwMDI4NjFC
RCAvKiBKU05vZGVET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNOb2RlRE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNBRkQ3
QUIyNTVGNTBEQzAwRTVFMzBFIC8qIFdvcmtlclRocmVhZFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V29ya2VyVGhyZWFkVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0IyRjBF
MzFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQjJGMEU0MUQ3RjM1RUMwMEIwQzlEMSAvKiBM
b2FkYWJsZUNsYXNzaWNTY3JpcHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TG9hZGFibGVDbGFzc2ljU2NyaXB0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
QjJGMEU3MUQ3RjM1RUMwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBMb2FkYWJsZVNjcmlwdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTg5OTQsNiArMTg5OTYsNyBAQAogCQkJCTJFQTc2ODAzMEZFNzEyNjQwMEFC
OUM4QSAvKiBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQuaCAqLywKIAkJCQkyRTQzNDY0MjBGNTQ2
QTgyMDBCMEYxQkEgLyogV29ya2VyVGhyZWFkLmNwcCAqLywKIAkJCQkyRTQzNDY0MzBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyVGhyZWFkLmggKi8sCisJCQkJRTNBRkQ3QUIyNTVGNTBEQzAwRTVF
MzBFIC8qIFdvcmtlclRocmVhZFR5cGUuaCAqLywKIAkJCQk1MUYxNzRGQzFGMzU4OTg4MDBDNzQ5
NTAgLyogV29ya2VyVHlwZS5oICovLAogCQkJCTUxRjE3NEZBMUYzNTg4RDcwMEM3NDk1MCAvKiBX
b3JrZXJUeXBlLmlkbCAqLywKIAkJCSk7CkBAIC0zNTEwMyw2ICszNTEwNiw3IEBACiAJCQkJMkU0
MzQ2NTUwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEI5MDU2RjkwRjI2ODVGMzAwOTVGRjZBIC8qIFdvcmtlclRocmVhZGFibGVMb2FkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTk3QUFCRDJEMTRGQTA5RDUwMDc0NTdBRSAvKiBXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNBRkQ3QUQyNTVG
NTBFQjAwRTVFMzBFIC8qIFdvcmtlclRocmVhZFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
NEEwQzY4MURCODA3RDkwMDE3QTkwQiAvKiBXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxRjE3NEZFMUYzNTg5OTIwMEM3NDk1MCAvKiBXb3JrZXJUeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QkRFQTMyMDIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xl
dC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9J
RExUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaAppbmRleCA3ZTg1
NTkwNWY5MDk3OTc3YjMzNWQzNDA1NzYxZDJhZTE3Njc3NjFmLi5iMTA1YTI0YmM1YTA1ZGZiZmVk
NjZhODE1YWNjMzFlM2Y5YmZjMTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9JRExUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKQEAg
LTE1MSw2ICsxNTEsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFJlcXVpcmVz
RXhpc3RpbmdBdG9tU3RyaW5nQWRhcHRvciA6IElETFN0cmluZzxBdG8KICAgICB1c2luZyBJbm5l
clR5cGUgPSBUOwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETEFsbG93U2hh
cmVkQWRhcHRvciA6IFQgeworICAgIHVzaW5nIElubmVyVHlwZSA9IFQ7Cit9OworCiBzdHJ1Y3Qg
SURMT2JqZWN0IDogSURMVHlwZTxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4gewogICAgIHVz
aW5nIE51bGxhYmxlVHlwZSA9IEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+OwogCkBAIC0zMjMs
NCArMzI3LDE3IEBAIHN0cnVjdCBJc0lETEZsb2F0aW5nUG9pbnQgOiBwdWJsaWMgc3RkOjppbnRl
Z3JhbF9jb25zdGFudDxib29sLCBXVEY6OklzQmFzZU9mVGVtCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
Pgogc3RydWN0IElzSURMVHlwZWRBcnJheSA6IHB1YmxpYyBzdGQ6OmludGVncmFsX2NvbnN0YW50
PGJvb2wsIFdURjo6SXNCYXNlT2ZUZW1wbGF0ZTxJRExUeXBlZEFycmF5LCBUPjo6dmFsdWU+IHsg
fTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBJc0lETEFycmF5QnVmZmVyIDogcHVi
bGljIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgc3RkOjppc19iYXNlX29mPElETEFycmF5
QnVmZmVyLCBUPjo6dmFsdWU+IHsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBJ
c0lETEFycmF5QnVmZmVyVmlldyA6IHB1YmxpYyBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2ws
IHN0ZDo6aXNfYmFzZV9vZjxJRExBcnJheUJ1ZmZlclZpZXcsIFQ+Ojp2YWx1ZT4geyB9OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IElzSURMQXJyYXlCdWZmZXJBbGxvd1NoYXJlZCA6
IHB1YmxpYyBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHN0ZDo6aXNfYmFzZV9vZjxJRExB
bGxvd1NoYXJlZEFkYXB0b3I8SURMQXJyYXlCdWZmZXI+LCBUPjo6dmFsdWU+IHsgfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBJc0lETEFycmF5QnVmZmVyVmlld0FsbG93U2hhcmVk
IDogcHVibGljIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgc3RkOjppc19iYXNlX29mPElE
TEFsbG93U2hhcmVkQWRhcHRvcjxJRExBcnJheUJ1ZmZlclZpZXc+LCBUPjo6dmFsdWU+IHsgfTsK
KworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9Db21tb25WTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21t
b25WTS5jcHAKaW5kZXggOWNlNjNhMGE3ZmM2YTFkNjIzNzU5MDU4OTU1NzYwMDIyNDgwMDgxNC4u
ZDM1YmVkMzBmZjQ1ZGFiZDZkNjczMjRkMzRhYjQ3ZmMzZjdjZGRiOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcApAQCAtODgsNyArODgsNyBAQCBKU0M6OlZNJiBjb21t
b25WTVNsb3coKQogCiAgICAgdm0uc2V0R2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhy
b3coZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coKSk7CiAKLSAgICBKU1ZNQ2xp
ZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKCZ2bSk7CisgICAgSlNWTUNsaWVudERhdGE6OmluaXRO
b3JtYWxXb3JsZCgmdm0sIFdvcmtlclRocmVhZFR5cGU6Ok1haW4pOwogCiAgICAgcmV0dXJuIHZt
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0
QnVmZmVyU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRC
dWZmZXJTb3VyY2UuaAppbmRleCA4OWE3NmI0NWQ3ZDNkMGQ1MmU1MDRiZDc1MDBlOTg5MTZkZjQ4
YWI1Li5iNmU0MDgzODMzZDM3ZDQyMGJiMTEwZTcxOWFlYWYzYTQyMDczYzQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRCdWZmZXJTb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRCdWZmZXJTb3VyY2Uu
aApAQCAtMTA5LDcgKzEwOSw4IEBAIGlubGluZSBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+
IHRvVW5zaGFyZWRBcnJheUJ1ZmZlclZpZXcoSlNDOjpWTSYgdm0sIEpTQzo6CiAKIG5hbWVzcGFj
ZSBEZXRhaWwgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBCdWZmZXJTb3VyY2VUeXBlPgorZW51bSBj
bGFzcyBCdWZmZXJTb3VyY2VDb252ZXJ0ZXJBbGxvd1NoYXJlZE1vZGUgeyBBbGxvdywgRGlzYWxs
b3cgfTsKK3RlbXBsYXRlPHR5cGVuYW1lIEJ1ZmZlclNvdXJjZVR5cGUsIEJ1ZmZlclNvdXJjZUNv
bnZlcnRlckFsbG93U2hhcmVkTW9kZSBtb2RlPgogc3RydWN0IEJ1ZmZlclNvdXJjZUNvbnZlcnRl
ciB7CiAgICAgdXNpbmcgV3JhcHBlclR5cGUgPSB0eXBlbmFtZSBDb252ZXJ0ZXI8QnVmZmVyU291
cmNlVHlwZT46OldyYXBwZXJUeXBlOwogICAgIHVzaW5nIFJldHVyblR5cGUgPSB0eXBlbmFtZSBD
b252ZXJ0ZXI8QnVmZmVyU291cmNlVHlwZT46OlJldHVyblR5cGU7CkBAIC0xMTksNyArMTIwLDEx
IEBAIHN0cnVjdCBCdWZmZXJTb3VyY2VDb252ZXJ0ZXIgewogICAgIHsKICAgICAgICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgICAgICBSZXR1cm5UeXBlIG9iamVjdCA9
IFdyYXBwZXJUeXBlOjp0b1dyYXBwZWQodm0sIHZhbHVlKTsKKyAgICAgICAgUmV0dXJuVHlwZSBv
YmplY3QgeyB9OworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gQnVmZmVyU291cmNlQ29u
dmVydGVyQWxsb3dTaGFyZWRNb2RlOjpBbGxvdykKKyAgICAgICAgICAgIG9iamVjdCA9IFdyYXBw
ZXJUeXBlOjp0b1dyYXBwZWRBbGxvd1NoYXJlZCh2bSwgdmFsdWUpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBvYmplY3QgPSBXcmFwcGVyVHlwZTo6dG9XcmFwcGVkKHZtLCB2YWx1ZSk7CiAg
ICAgICAgIGlmIChVTkxJS0VMWSghb2JqZWN0KSkKICAgICAgICAgICAgIGV4Y2VwdGlvblRocm93
ZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUpOwogICAgICAgICByZXR1cm4gb2JqZWN0OwpA
QCAtMTM1LDcgKzE0MCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExBcnJheUJ1
ZmZlcj4gOiBEZWZhdWx0Q29udmVydGVyPElETEFycmF5QnVmZmVyPiB7CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgogICAg
IHN0YXRpYyBSZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0
aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBE
ZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExBcnJheUJ1ZmZlcj46OmNvbnZlcnQobGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihl
eGNlcHRpb25UaHJvd2VyKSk7CisgICAgICAgIHJldHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNv
bnZlcnRlcjxJRExBcnJheUJ1ZmZlciwgRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXJBbGxv
d1NoYXJlZE1vZGU6OkRpc2FsbG93Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKICAg
ICB9CiB9OwogCkBAIC0xNTcsNyArMTYyLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVy
PElETERhdGFWaWV3PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMRGF0YVZpZXc+IHsKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJvd2VyID0gRGVmYXVsdEV4Y2VwdGlvblRocm93ZXI+
CiAgICAgc3RhdGljIFJldHVyblR5cGUgY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIEV4Y2VwdGlvblRocm93ZXImJiBl
eGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigpKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPElETERhdGFWaWV3Pjo6Y29udmVydChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+
KGV4Y2VwdGlvblRocm93ZXIpKTsKKyAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNl
Q29udmVydGVyPElETERhdGFWaWV3LCBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlckFsbG93
U2hhcmVkTW9kZTo6RGlzYWxsb3c+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
LCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOwogICAg
IH0KIH07CiAKQEAgLTE3OSw3ICsxODQsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8
SURMSW50OEFycmF5PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMSW50OEFycmF5PiB7CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2Vy
PgogICAgIHN0YXRpYyBSZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYg
ZXhjZXB0aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExJbnQ4QXJyYXk+Ojpjb252ZXJ0
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dl
cj4oZXhjZXB0aW9uVGhyb3dlcikpOworICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3Vy
Y2VDb252ZXJ0ZXI8SURMSW50OEFycmF5LCBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlckFs
bG93U2hhcmVkTW9kZTo6RGlzYWxsb3c+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOwog
ICAgIH0KIH07CiAKQEAgLTIwMSw3ICsyMDYsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0
ZXI8SURMSW50MTZBcnJheT4gOiBEZWZhdWx0Q29udmVydGVyPElETEludDE2QXJyYXk+IHsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJvd2VyID0gRGVmYXVsdEV4Y2VwdGlvblRo
cm93ZXI+CiAgICAgc3RhdGljIFJldHVyblR5cGUgY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIEV4Y2VwdGlvblRocm93
ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigpKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPElETEludDE2QXJyYXk+Ojpj
b252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9u
VGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOworICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZm
ZXJTb3VyY2VDb252ZXJ0ZXI8SURMSW50MTZBcnJheSwgRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252
ZXJ0ZXJBbGxvd1NoYXJlZE1vZGU6OkRpc2FsbG93Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93
ZXIpKTsKICAgICB9CiB9OwogCkBAIC0yMjMsNyArMjI4LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
Q29udmVydGVyPElETEludDMyQXJyYXk+IDogRGVmYXVsdENvbnZlcnRlcjxJRExJbnQzMkFycmF5
PiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNl
cHRpb25UaHJvd2VyPgogICAgIHN0YXRpYyBSZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRp
b25UaHJvd2VyJiYgZXhjZXB0aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExJbnQzMkFy
cmF5Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4
Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKKyAgICAgICAgcmV0dXJuIERldGFp
bDo6QnVmZmVyU291cmNlQ29udmVydGVyPElETEludDMyQXJyYXksIERldGFpbDo6QnVmZmVyU291
cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlOjpEaXNhbGxvdz46OmNvbnZlcnQobGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihleGNlcHRp
b25UaHJvd2VyKSk7CiAgICAgfQogfTsKIApAQCAtMjQ1LDcgKzI1MCw3IEBAIHRlbXBsYXRlPD4g
c3RydWN0IENvbnZlcnRlcjxJRExVaW50OEFycmF5PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMVWlu
dDhBcnJheT4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlvblRocm93ZXIgPSBEZWZh
dWx0RXhjZXB0aW9uVGhyb3dlcj4KICAgICBzdGF0aWMgUmV0dXJuVHlwZSBjb252ZXJ0KEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwg
RXhjZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkp
CiAgICAgewotICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURM
VWludDhBcnJheT46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9y
d2FyZDxFeGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7CisgICAgICAgIHJldHVy
biBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExVaW50OEFycmF5LCBEZXRhaWw6OkJ1
ZmZlclNvdXJjZUNvbnZlcnRlckFsbG93U2hhcmVkTW9kZTo6RGlzYWxsb3c+Ojpjb252ZXJ0KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4o
ZXhjZXB0aW9uVGhyb3dlcikpOwogICAgIH0KIH07CiAKQEAgLTI3Myw3ICsyNzgsNyBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURMVWludDE2QXJyYXk+IDogRGVmYXVsdENvbnZlcnRl
cjxJRExVaW50MTZBcnJheT4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlvblRocm93
ZXIgPSBEZWZhdWx0RXhjZXB0aW9uVGhyb3dlcj4KICAgICBzdGF0aWMgUmV0dXJuVHlwZSBjb252
ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSB2YWx1ZSwgRXhjZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIgPSBFeGNlcHRpb25U
aHJvd2VyKCkpCiAgICAgewotICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252
ZXJ0ZXI8SURMVWludDE2QXJyYXk+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
LCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOworICAg
ICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMVWludDE2QXJyYXks
IERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlOjpEaXNhbGxvdz46
OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRp
b25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7CiAgICAgfQogfTsKIApAQCAtMjk1LDcgKzMw
MCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExVaW50MzJBcnJheT4gOiBEZWZh
dWx0Q29udmVydGVyPElETFVpbnQzMkFycmF5PiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXhj
ZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgogICAgIHN0YXRpYyBSZXR1
cm5UeXBlIGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0aW9uVGhyb3dlciA9
IEV4Y2VwdGlvblRocm93ZXIoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBEZXRhaWw6OkJ1ZmZl
clNvdXJjZUNvbnZlcnRlcjxJRExVaW50MzJBcnJheT46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJv
d2VyKSk7CisgICAgICAgIHJldHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExV
aW50MzJBcnJheSwgRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXJBbGxvd1NoYXJlZE1vZGU6
OkRpc2FsbG93Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3
YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKICAgICB9CiB9OwogCkBA
IC0zMTcsNyArMzIyLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETFVpbnQ4Q2xh
bXBlZEFycmF5PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMVWludDhDbGEKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBFeGNlcHRpb25UaHJvd2VyID0gRGVmYXVsdEV4Y2VwdGlvblRocm93ZXI+CiAgICAg
c3RhdGljIFJldHVyblR5cGUgY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRp
b25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIERl
dGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPElETFVpbnQ4Q2xhbXBlZEFycmF5Pjo6Y29udmVy
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93
ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKKyAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291
cmNlQ29udmVydGVyPElETFVpbnQ4Q2xhbXBlZEFycmF5LCBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNv
bnZlcnRlckFsbG93U2hhcmVkTW9kZTo6RGlzYWxsb3c+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhy
b3dlcikpOwogICAgIH0KIH07CiAKQEAgLTMzOSw3ICszNDQsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBDb252ZXJ0ZXI8SURMRmxvYXQzMkFycmF5PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMRmxvYXQz
MkFycmF5PgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlvblRocm93ZXIgPSBEZWZhdWx0
RXhjZXB0aW9uVGhyb3dlcj4KICAgICBzdGF0aWMgUmV0dXJuVHlwZSBjb252ZXJ0KEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhj
ZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkpCiAg
ICAgewotICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMRmxv
YXQzMkFycmF5Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3
YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKKyAgICAgICAgcmV0dXJu
IERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPElETEZsb2F0MzJBcnJheSwgRGV0YWlsOjpC
dWZmZXJTb3VyY2VDb252ZXJ0ZXJBbGxvd1NoYXJlZE1vZGU6OkRpc2FsbG93Pjo6Y29udmVydChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+
KGV4Y2VwdGlvblRocm93ZXIpKTsKICAgICB9CiB9OwogCkBAIC0zNjEsNyArMzY2LDcgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETEZsb2F0NjRBcnJheT4gOiBEZWZhdWx0Q29udmVy
dGVyPElETEZsb2F0NjRBcnJheT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJv
d2VyID0gRGVmYXVsdEV4Y2VwdGlvblRocm93ZXI+CiAgICAgc3RhdGljIFJldHVyblR5cGUgY29u
dmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgdmFsdWUsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9u
VGhyb3dlcigpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29u
dmVydGVyPElETEZsb2F0NjRBcnJheT46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7Cisg
ICAgICAgIHJldHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExGbG9hdDY0QXJy
YXksIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlOjpEaXNhbGxv
dz46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNl
cHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7CiAgICAgfQogfTsKIApAQCAtMzgzLDcg
KzM4OCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExBcnJheUJ1ZmZlclZpZXc+
IDogRGVmYXVsdENvbnZlcnRlcjxJRExBcnJheUJ1ZmZlCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgogICAgIHN0YXRpYyBS
ZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0aW9uVGhyb3dl
ciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBEZXRhaWw6OkJ1
ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExBcnJheUJ1ZmZlclZpZXc+Ojpjb252ZXJ0KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0
aW9uVGhyb3dlcikpOworICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0
ZXI8SURMQXJyYXlCdWZmZXJWaWV3LCBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlckFsbG93
U2hhcmVkTW9kZTo6RGlzYWxsb3c+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
LCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOwogICAg
IH0KIH07CiAKQEAgLTM5OCw0ICs0MDMsMTcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgSlNDb252ZXJ0
ZXI8SURMQXJyYXlCdWZmZXJWaWV3PiB7CiAgICAgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK3N0cnVjdCBDb252ZXJ0ZXI8SURMQWxsb3dTaGFyZWRBZGFwdG9yPFQ+PiA6IERlZmF1bHRD
b252ZXJ0ZXI8VD4geworICAgIHVzaW5nIENvbnZlcnRlclR5cGUgPSBDb252ZXJ0ZXI8VD47Cisg
ICAgdXNpbmcgV3JhcHBlclR5cGUgPSB0eXBlbmFtZSBDb252ZXJ0ZXJUeXBlOjpXcmFwcGVyVHlw
ZTsKKyAgICB1c2luZyBSZXR1cm5UeXBlID0gdHlwZW5hbWUgQ29udmVydGVyVHlwZTo6UmV0dXJu
VHlwZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlvblRocm93ZXIgPSBEZWZhdWx0
RXhjZXB0aW9uVGhyb3dlcj4KKyAgICBzdGF0aWMgUmV0dXJuVHlwZSBjb252ZXJ0KEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhj
ZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkpCisg
ICAgeworICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8VCwgRGV0
YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXJBbGxvd1NoYXJlZE1vZGU6OkFsbG93Pjo6Y29udmVy
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93
ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKKyAgICB9Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRV
bmlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VW5pb24uaApp
bmRleCAxZjgyNDMzZjkyYzcxYTExYWJlNzc4Njk5MTQzNmI3YjgzZDU1YjRiLi5mOGM3MDFiZTE5
MDYwYzQ5ZDY3YTVmMDBmYmY5YTY3Mjg1ZWZlZmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRVbmlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQ29udmVydFVuaW9uLmgKQEAgLTIyNSw5ICsyMjUsOSBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBUPiBzdHJ1Y3QgQ29udmVydGVyPElETFVuaW9uPFQuLi4+PiA6IERlZmF1
bHRDb252ZXJ0ZXI8SURMVQogICAgICAgICAvLyA3LiBJZiBUeXBlKFYpIGlzIE9iamVjdCBhbmQg
ViBoYXMgYW4gW1tBcnJheUJ1ZmZlckRhdGFdXSBpbnRlcm5hbCBzbG90LCB0aGVuOgogICAgICAg
ICAvLyAgICAgMS4gSWYgdHlwZXMgaW5jbHVkZXMgQXJyYXlCdWZmZXIsIHRoZW4gcmV0dXJuIHRo
ZSByZXN1bHQgb2YgY29udmVydGluZyBWIHRvIEFycmF5QnVmZmVyLgogICAgICAgICAvLyAgICAg
Mi4gSWYgdHlwZXMgaW5jbHVkZXMgb2JqZWN0LCB0aGVuIHJldHVybiB0aGUgSURMIHZhbHVlIHRo
YXQgaXMgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBWLgotICAgICAgICBjb25zdGV4cHIgYm9v
bCBoYXNBcnJheUJ1ZmZlclR5cGUgPSBicmlnYW5kOjphbnk8VHlwZUxpc3QsIHN0ZDo6aXNfc2Ft
ZTxJRExBcnJheUJ1ZmZlciwgYnJpZ2FuZDo6XzE+Pjo6dmFsdWU7CisgICAgICAgIGNvbnN0ZXhw
ciBib29sIGhhc0FycmF5QnVmZmVyVHlwZSA9IGJyaWdhbmQ6OmFueTxUeXBlTGlzdCwgSXNJRExB
cnJheUJ1ZmZlcjxicmlnYW5kOjpfMT4+Ojp2YWx1ZTsKICAgICAgICAgaWYgKGhhc0FycmF5QnVm
ZmVyVHlwZSB8fCBoYXNPYmplY3RUeXBlKSB7Ci0gICAgICAgICAgICBhdXRvIGFycmF5QnVmZmVy
ID0gSlNDOjpKU0FycmF5QnVmZmVyOjp0b1dyYXBwZWQodm0sIHZhbHVlKTsKKyAgICAgICAgICAg
IGF1dG8gYXJyYXlCdWZmZXIgPSAoYnJpZ2FuZDo6YW55PFR5cGVMaXN0LCBJc0lETEFycmF5QnVm
ZmVyQWxsb3dTaGFyZWQ8YnJpZ2FuZDo6XzE+Pjo6dmFsdWUpID8gSlNDOjpKU0FycmF5QnVmZmVy
Ojp0b1dyYXBwZWRBbGxvd1NoYXJlZCh2bSwgdmFsdWUpIDogSlNDOjpKU0FycmF5QnVmZmVyOjp0
b1dyYXBwZWQodm0sIHZhbHVlKTsKICAgICAgICAgICAgIGlmIChhcnJheUJ1ZmZlcikgewogICAg
ICAgICAgICAgICAgIGlmIChoYXNBcnJheUJ1ZmZlclR5cGUpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBDb25kaXRpb25hbFJldHVybmVyPFJldHVyblR5cGUsIGhhc0FycmF5QnVmZmVyVHlw
ZT46OmdldChXVEZNb3ZlKGFycmF5QnVmZmVyKSkudmFsdWUoKTsKQEAgLTIzNSw5ICsyMzUsOSBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPiBzdHJ1Y3QgQ29udmVydGVyPElETFVuaW9uPFQuLi4+
PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMVQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAg
ICAgICAgY29uc3RleHByIGJvb2wgaGFzQXJyYXlCdWZmZXJWaWV3VHlwZSA9IGJyaWdhbmQ6OmFu
eTxUeXBlTGlzdCwgc3RkOjppc19zYW1lPElETEFycmF5QnVmZmVyVmlldywgYnJpZ2FuZDo6XzE+
Pjo6dmFsdWU7CisgICAgICAgIGNvbnN0ZXhwciBib29sIGhhc0FycmF5QnVmZmVyVmlld1R5cGUg
PSBicmlnYW5kOjphbnk8VHlwZUxpc3QsIElzSURMQXJyYXlCdWZmZXJWaWV3PGJyaWdhbmQ6Ol8x
Pj46OnZhbHVlOwogICAgICAgICBpZiAoaGFzQXJyYXlCdWZmZXJWaWV3VHlwZSB8fCBoYXNPYmpl
Y3RUeXBlKSB7Ci0gICAgICAgICAgICBhdXRvIGFycmF5QnVmZmVyVmlldyA9IEpTQzo6SlNBcnJh
eUJ1ZmZlclZpZXc6OnRvV3JhcHBlZCh2bSwgdmFsdWUpOworICAgICAgICAgICAgYXV0byBhcnJh
eUJ1ZmZlclZpZXcgPSAoYnJpZ2FuZDo6YW55PFR5cGVMaXN0LCBJc0lETEFycmF5QnVmZmVyVmll
d0FsbG93U2hhcmVkPGJyaWdhbmQ6Ol8xPj46OnZhbHVlKSA/IEpTQzo6SlNBcnJheUJ1ZmZlclZp
ZXc6OnRvV3JhcHBlZEFsbG93U2hhcmVkKHZtLCB2YWx1ZSkgOiBKU0M6OkpTQXJyYXlCdWZmZXJW
aWV3Ojp0b1dyYXBwZWQodm0sIHZhbHVlKTsKICAgICAgICAgICAgIGlmIChhcnJheUJ1ZmZlclZp
ZXcpIHsKICAgICAgICAgICAgICAgICBpZiAoaGFzQXJyYXlCdWZmZXJWaWV3VHlwZSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIENvbmRpdGlvbmFsUmV0dXJuZXI8UmV0dXJuVHlwZSwgaGFz
QXJyYXlCdWZmZXJWaWV3VHlwZT46OmdldChXVEZNb3ZlKGFycmF5QnVmZmVyVmlldykpLnZhbHVl
KCk7CkBAIC00MDUsNCArNDA1LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFQ+IHN0cnVjdCBK
U0NvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4gewogICAgIH0KIH07CiAKKy8vIEJ1ZmZlclNvdXJj
ZSBzcGVjaWFsaXphdGlvbi4gSW4gV2ViS2l0LCBCdWZmZXJTb3VyY2UgaXMgZGVmaW5lZCBhcyBJ
RExVbmlvbjxJRExBcnJheUJ1ZmZlclZpZXcsIElETEFycmF5QnVmZmVyPiBhcyBhIGhhY2ssIGFu
ZCBpdCBpcyBub3QgY29tcGF0aWJsZSB0bworLy8gYW5ub3RhdGlvbiBkZXNjcmliZWQgaW4gV2Vi
SURMLgordGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETEFsbG93U2hhcmVkQWRhcHRvcjxJ
RExVbmlvbjxJRExBcnJheUJ1ZmZlclZpZXcsIElETEFycmF5QnVmZmVyPj4+IDogRGVmYXVsdENv
bnZlcnRlcjxJRExVbmlvbjxJRExBcnJheUJ1ZmZlclZpZXcsIElETEFycmF5QnVmZmVyPj4gewor
ICAgIHN0YXRpYyBhdXRvIGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlKSAtPiBkZWNsdHlwZShhdXRvKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIENvbnZlcnRlcjxJRExVbmlvbjxJRExBbGxvd1NoYXJlZEFkYXB0b3I8SURM
QXJyYXlCdWZmZXJWaWV3PiwgSURMQWxsb3dTaGFyZWRBZGFwdG9yPElETEFycmF5QnVmZmVyPj4+
Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICB9Cit9OworCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCAyZDk5YmU2NDEzYzMwYzE0MDhmNTM2YmMx
OGEyMWVjODQxYTk3NzYzLi5kOGNjZjRjYzZiMmZlZWZjMmY0ZDA3MzRkZmIxYmQ1NDRmMTc5ZWMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKQEAgLTc1LDYgKzc1LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U1NldC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU2V0SXRlcmF0b3IuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU1R5cGVkQXJyYXlzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNXZWJBc3NlbWJseU1lbW9yeS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
V2ViQXNzZW1ibHlNb2R1bGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25z
dHJ1Y3Rvci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+
CkBAIC0xODIsNiArMTgzLDkgQEAgZW51bSBTZXJpYWxpemF0aW9uVGFnIHsKICNlbmRpZgogICAg
IEJpZ0ludFRhZyA9IDQ3LAogICAgIEJpZ0ludE9iamVjdFRhZyA9IDQ4LAorI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKKyAgICBXYXNtTWVtb3J5VGFnID0gNDksCisjZW5kaWYKICAgICBFcnJvclRh
ZyA9IDI1NQogfTsKIApAQCAtMzU3LDcgKzM2MSw2IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJpbmdEYXRhSXM4Qml0RmxhZyA9IDB4ODAwMDAwMDA7CiAgKiAgICB8IE1lc3NhZ2VQb3J0UmVm
ZXJlbmNlVGFnIDx2YWx1ZTp1aW50MzJfdD4KICAqICAgIHwgQXJyYXlCdWZmZXIKICAqICAgIHwg
QXJyYXlCdWZmZXJWaWV3VGFnIEFycmF5QnVmZmVyVmlld1N1YnRhZyA8Ynl0ZU9mZnNldDp1aW50
MzJfdD4gPGJ5dGVMZW5ndGg6dWludDMyX3Q+IChBcnJheUJ1ZmZlciB8IE9iamVjdFJlZmVyZW5j
ZSkKLSAqICAgIHwgQXJyYXlCdWZmZXJUcmFuc2ZlclRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAg
ICB8IENyeXB0b0tleVRhZyA8d3JhcHBlZEtleUxlbmd0aDp1aW50MzJfdD4gPGZhY3RvcjpieXRl
e3dyYXBwZWRLZXlMZW5ndGh9PgogICogICAgfCBET01Qb2ludAogICogICAgfCBET01SZWN0CkBA
IC0zNjcsNiArMzcwLDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cmluZ0RhdGFJczhCaXRG
bGFnID0gMHg4MDAwMDAwMDsKICAqICAgIHwgUlRDQ2VydGlmaWNhdGVUYWcKICAqICAgIHwgSW1h
Z2VCaXRtYXBUYWcgPG9yaWdpbkNsZWFuOnVpbnQ4X3Q+IDxsb2dpY2FsV2lkdGg6aW50MzJfdD4g
PGxvZ2ljYWxIZWlnaHQ6aW50MzJfdD4gPHJlc29sdXRpb25TY2FsZTpkb3VibGU+IDxieXRlTGVu
Z3RoOnVpbnQzMl90Pig8aW1hZ2VCeXRlRGF0YTp1aW50OF90PikKICAqICAgIHwgT2Zmc2NyZWVu
Q2FudmFzVHJhbnNmZXJUYWcgPHZhbHVlOnVpbnQzMl90PgorICogICAgfCBXYXNtTWVtb3J5VGFn
IDx2YWx1ZTp1aW50MzJfdD4KICAqCiAgKiBJbnNpZGUgY2VydGlmaWNhdGUsIGRhdGEgaXMgc2Vy
aWFsaXplZCBpbiB0aGlzIGZvcm1hdCBhcyBwZXIgc3BlYzoKICAqCkBAIC00MTksNiArNDIzLDgg
QEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cmluZ0RhdGFJczhCaXRGbGFnID0gMHg4MDAwMDAw
MDsKICAqCiAgKiBBcnJheUJ1ZmZlciA6LQogICogICAgQXJyYXlCdWZmZXJUYWcgPGxlbmd0aDp1
aW50MzJfdD4gPGNvbnRlbnRzOmJ5dGV7bGVuZ3RofT4KKyAqICAgIEFycmF5QnVmZmVyVHJhbnNm
ZXJUYWcgPHZhbHVlOnVpbnQzMl90PgorICogICAgU2hhcmVkQXJyYXlCdWZmZXJUYWcgPHZhbHVl
OnVpbnQzMl90PgogICoKICAqIENyeXB0b0tleUhNQUMgOi0KICAqICAgIDxrZXlTaXplOnVpbnQz
Ml90PiA8a2V5RGF0YTpieXRle2tleVNpemV9PiBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyVGFn
IC8vIEFsZ29yaXRobSB0YWcgaW5uZXIgaGFzaCBmdW5jdGlvbi4KQEAgLTU3Niw2ICs1ODIsNyBA
QCBjbGFzcyBDbG9uZVNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogI2VuZGlmCiAjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQogICAgICAgICAgICAgV2FzbU1vZHVsZUFycmF5JiB3YXNtTW9kdWxlcywK
KyAgICAgICAgICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSYgd2FzbU1lbW9yeUhhbmRsZXMsCiAj
ZW5kaWYKICAgICAgICAgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBWZWN0b3I8dWludDhfdD4m
IG91dCwgU2VyaWFsaXphdGlvbkNvbnRleHQgY29udGV4dCwgQXJyYXlCdWZmZXJDb250ZW50c0Fy
cmF5JiBzaGFyZWRCdWZmZXJzKQogICAgIHsKQEAgLTU4NSw2ICs1OTIsNyBAQCBjbGFzcyBDbG9u
ZVNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogICAgICAgICAgICAgd2FzbU1vZHVsZXMsCisgICAgICAgICAgICB3YXNtTWVtb3J5SGFuZGxl
cywKICNlbmRpZgogICAgICAgICAgICAgYmxvYlVSTHMsIG91dCwgY29udGV4dCwgc2hhcmVkQnVm
ZmVycyk7CiAgICAgICAgIHJldHVybiBzZXJpYWxpemVyLnNlcmlhbGl6ZSh2YWx1ZSk7CkBAIC02
MTUsNiArNjIzLDcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICNlbmRp
ZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgICAgIFdhc21Nb2R1bGVBcnJheSYg
d2FzbU1vZHVsZXMsCisgICAgICAgICAgICBXYXNtTWVtb3J5SGFuZGxlQXJyYXkmIHdhc21NZW1v
cnlIYW5kbGVzLAogI2VuZGlmCiAgICAgICAgIFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgVmVj
dG9yPHVpbnQ4X3Q+JiBvdXQsIFNlcmlhbGl6YXRpb25Db250ZXh0IGNvbnRleHQsIEFycmF5QnVm
ZmVyQ29udGVudHNBcnJheSYgc2hhcmVkQnVmZmVycykKICAgICAgICAgOiBDbG9uZUJhc2UobGV4
aWNhbEdsb2JhbE9iamVjdCkKQEAgLTYyNSw2ICs2MzQsNyBAQCBjbGFzcyBDbG9uZVNlcmlhbGl6
ZXIgOiBDbG9uZUJhc2UgewogICAgICAgICAsIG1fc2hhcmVkQnVmZmVycyhzaGFyZWRCdWZmZXJz
KQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBtX3dhc21Nb2R1bGVzKHdhc21N
b2R1bGVzKQorICAgICAgICAsIG1fd2FzbU1lbW9yeUhhbmRsZXMod2FzbU1lbW9yeUhhbmRsZXMp
CiAjZW5kaWYKICAgICB7CiAgICAgICAgIHdyaXRlKEN1cnJlbnRWZXJzaW9uKTsKQEAgLTEyMzAs
NiArMTI0MCw3IEBAIGNsYXNzIENsb25lU2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAgICAgICAg
ICAgICAgICAgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4gZHVtbXlBcnJheUJ1ZmZl
cnM7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAgICAgIFdhc21Nb2R1bGVB
cnJheSBkdW1teU1vZHVsZXM7CisgICAgICAgICAgICAgICAgV2FzbU1lbW9yeUhhbmRsZUFycmF5
IGR1bW15TWVtb3J5SGFuZGxlczsKICNlbmRpZgogICAgICAgICAgICAgICAgIEFycmF5QnVmZmVy
Q29udGVudHNBcnJheSBkdW1teVNoYXJlZEJ1ZmZlcnM7CiAgICAgICAgICAgICAgICAgQ2xvbmVT
ZXJpYWxpemVyIHJhd0tleVNlcmlhbGl6ZXIobV9sZXhpY2FsR2xvYmFsT2JqZWN0LCBkdW1teU1l
c3NhZ2VQb3J0cywgZHVtbXlBcnJheUJ1ZmZlcnMsIHsgfSwKQEAgLTEyMzgsNiArMTI0OSw3IEBA
IGNsYXNzIENsb25lU2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAjZW5kaWYKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAgICAgICAgICAgICAgICAgICAgIGR1bW15TW9kdWxlcywKKyAgICAgICAg
ICAgICAgICAgICAgZHVtbXlNZW1vcnlIYW5kbGVzLAogI2VuZGlmCiAgICAgICAgICAgICAgICAg
ICAgIGR1bW15QmxvYlVSTHMsIHNlcmlhbGl6ZWRLZXksIFNlcmlhbGl6YXRpb25Db250ZXh0OjpE
ZWZhdWx0LCBkdW1teVNoYXJlZEJ1ZmZlcnMpOwogICAgICAgICAgICAgICAgIHJhd0tleVNlcmlh
bGl6ZXIud3JpdGUoa2V5KTsKQEAgLTEyNzQsNiArMTI4NiwxNyBAQCBjbGFzcyBDbG9uZVNlcmlh
bGl6ZXIgOiBDbG9uZUJhc2UgewogICAgICAgICAgICAgICAgIHdyaXRlKGluZGV4KTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChK
U1dlYkFzc2VtYmx5TWVtb3J5KiBtZW1vcnkgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlN
ZW1vcnkqPih2bSwgb2JqKSkgeworICAgICAgICAgICAgICAgIGlmIChtZW1vcnktPm1lbW9yeSgp
LnNoYXJpbmdNb2RlKCkgIT0gSlNDOjpXYXNtOjpNZW1vcnlTaGFyaW5nTW9kZTo6U2hhcmVkKSB7
CisgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6RGF0
YUNsb25lRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB1aW50MzJfdCBpbmRleCA9IG1fd2FzbU1lbW9yeUhh
bmRsZXMuc2l6ZSgpOworICAgICAgICAgICAgICAgIG1fd2FzbU1lbW9yeUhhbmRsZXMuYXBwZW5k
KG1ha2VSZWYobWVtb3J5LT5tZW1vcnkoKS5oYW5kbGUoKSkpOworICAgICAgICAgICAgICAgIHdy
aXRlKFdhc21NZW1vcnlUYWcpOworICAgICAgICAgICAgICAgIHdyaXRlKGluZGV4KTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KICNlbmRpZgogICAgICAgICAg
ICAgaWYgKG9iai0+aW5oZXJpdHM8SlNET01Qb2ludFJlYWRPbmx5Pih2bSkpIHsKICAgICAgICAg
ICAgICAgICBkdW1wRE9NUG9pbnQob2JqKTsKQEAgLTE2NTgsNiArMTY4MSw3IEBAIGNsYXNzIENs
b25lU2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAgICAgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5
JiBtX3NoYXJlZEJ1ZmZlcnM7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdhc21Nb2R1
bGVBcnJheSYgbV93YXNtTW9kdWxlczsKKyAgICBXYXNtTWVtb3J5SGFuZGxlQXJyYXkmIG1fd2Fz
bU1lbW9yeUhhbmRsZXM7CiAjZW5kaWYKIH07CiAKQEAgLTE5MzcsNiArMTk2MSw3IEBAIGNsYXNz
IENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgLCBBcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXkqIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBidWZmZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgY29uc3QgVmVjdG9y
PFN0cmluZz4gYmxvYkZpbGVQYXRocywgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5KiBzaGFyZWRC
dWZmZXJzCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAsIFdhc21Nb2R1bGVBcnJh
eSogd2FzbU1vZHVsZXMKKyAgICAgICAgLCBXYXNtTWVtb3J5SGFuZGxlQXJyYXkqIHdhc21NZW1v
cnlIYW5kbGVzCiAjZW5kaWYKICAgICAgICAgKQogICAgIHsKQEAgLTE5NDgsNiArMTk3Myw3IEBA
IGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICNlbmRpZgogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKICAgICAgICAgICAgICwgd2FzbU1vZHVsZXMKKyAgICAgICAgICAgICwg
d2FzbU1lbW9yeUhhbmRsZXMKICNlbmRpZgogICAgICAgICAgICAgKTsKICAgICAgICAgaWYgKCFk
ZXNlcmlhbGl6ZXIuaXNWYWxpZCgpKQpAQCAtMjAwMSw2ICsyMDI3LDcgQEAgY2xhc3MgQ2xvbmVE
ZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogICAgICAgICAsIFdhc21Nb2R1bGVBcnJheSogd2FzbU1vZHVsZXMgPSBudWxscHRyCisgICAg
ICAgICwgV2FzbU1lbW9yeUhhbmRsZUFycmF5KiB3YXNtTWVtb3J5SGFuZGxlcyA9IG51bGxwdHIK
ICNlbmRpZgogICAgICAgICApCiAgICAgICAgIDogQ2xvbmVCYXNlKGxleGljYWxHbG9iYWxPYmpl
Y3QpCkBAIC0yMDIxLDYgKzIwNDgsNyBAQCBjbGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENsb25l
QmFzZSB7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgbV93YXNt
TW9kdWxlcyh3YXNtTW9kdWxlcykKKyAgICAgICAgLCBtX3dhc21NZW1vcnlIYW5kbGVzKHdhc21N
ZW1vcnlIYW5kbGVzKQogI2VuZGlmCiAgICAgewogICAgICAgICBpZiAoIXJlYWQobV92ZXJzaW9u
KSkKQEAgLTIwMzMsNiArMjA2MSw3IEBAIGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVC
YXNlIHsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBXYXNtTW9k
dWxlQXJyYXkqIHdhc21Nb2R1bGVzCisgICAgICAgICwgV2FzbU1lbW9yeUhhbmRsZUFycmF5KiB3
YXNtTWVtb3J5SGFuZGxlcwogI2VuZGlmCiAgICAgICAgICkKICAgICAgICAgOiBDbG9uZUJhc2Uo
bGV4aWNhbEdsb2JhbE9iamVjdCkKQEAgLTIwNTYsNiArMjA4NSw3IEBAIGNsYXNzIENsb25lRGVz
ZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICAgICAgICAgLCBtX3dhc21Nb2R1bGVzKHdhc21Nb2R1bGVzKQorICAgICAgICAsIG1fd2FzbU1l
bW9yeUhhbmRsZXMod2FzbU1lbW9yeUhhbmRsZXMpCiAjZW5kaWYKICAgICB7CiAgICAgICAgIGlm
ICghcmVhZChtX3ZlcnNpb24pKQpAQCAtMzI5OSw2ICszMzI5LDMzIEBAIGNsYXNzIENsb25lRGVz
ZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgICAgIG1fZ2NCdWZmZXIuYXBwZW5kV2l0
aENyYXNoT25PdmVyZmxvdyhyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgfQorICAgICAgICBjYXNlIFdhc21NZW1vcnlUYWc6IHsKKyAgICAgICAgICAgIHVpbnQz
Ml90IGluZGV4OworICAgICAgICAgICAgYm9vbCBpbmRleFN1Y2Nlc3NmdWxseVJlYWQgPSByZWFk
KGluZGV4KTsKKyAgICAgICAgICAgIGlmICghaW5kZXhTdWNjZXNzZnVsbHlSZWFkIHx8ICFtX3dh
c21NZW1vcnlIYW5kbGVzIHx8IGluZGV4ID49IG1fd2FzbU1lbW9yeUhhbmRsZXMtPnNpemUoKSkg
eworICAgICAgICAgICAgICAgIGZhaWwoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUmVmUHRyPFdhc206Ok1lbW9yeUhhbmRs
ZT4gaGFuZGxlID0gbV93YXNtTWVtb3J5SGFuZGxlcy0+YXQoaW5kZXgpOworICAgICAgICAgICAg
aWYgKCFoYW5kbGUpIHsKKyAgICAgICAgICAgICAgICBmYWlsKCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8mIHZtID0g
bV9sZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOworICAgICAgICAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICAgICAgSlNXZWJBc3NlbWJseU1lbW9yeSog
cmVzdWx0ID0gSlNDOjpKU1dlYkFzc2VtYmx5TWVtb3J5Ojp0cnlDcmVhdGUobV9sZXhpY2FsR2xv
YmFsT2JqZWN0LCB2bSwgbV9nbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5TWVtb3J5U3RydWN0dXJl
KCkpOworICAgICAgICAgICAgLy8gU2luY2Ugd2UgYXJlIGNsb25pbmcgYSBKU1dlYkFzc2VtYmx5
TWVtb3J5LCBpdCdzIGltcG9zc2libGUgZm9yIHRoYXQKKyAgICAgICAgICAgIC8vIG1vZHVsZSB0
byBub3QgaGF2ZSBiZWVuIGEgdmFsaWQgbW9kdWxlLiBUaGVyZWZvcmUsIGNyZWF0ZVN0dWIgc2hv
dWxkCisgICAgICAgICAgICAvLyBub3QgdHJvdy4KKyAgICAgICAgICAgIHNjb3BlLnJlbGVhc2VB
c3NlcnROb0V4Y2VwdGlvbigpOworICAgICAgICAgICAgUmVmPFdhc206Ok1lbW9yeT4gbWVtb3J5
ID0gV2FzbTo6TWVtb3J5OjpjcmVhdGUoaGFuZGxlLnJlbGVhc2VOb25OdWxsKCksCisgICAgICAg
ICAgICAgICAgWyZ2bV0gKFdhc206Ok1lbW9yeTo6Tm90aWZ5UHJlc3N1cmUpIHsgdm0uaGVhcC5j
b2xsZWN0QXN5bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKKyAgICAgICAgICAgICAgICBb
JnZtXSAoV2FzbTo6TWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7IHZtLmhlYXAuY29sbGVjdFN5
bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKKyAgICAgICAgICAgICAgICBbJnZtLCByZXN1
bHRdIChXYXNtOjpNZW1vcnk6Okdyb3dTdWNjZXNzLCBXYXNtOjpQYWdlQ291bnQgb2xkUGFnZUNv
dW50LCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50KSB7IHJlc3VsdC0+Z3Jvd1N1Y2Nlc3ND
YWxsYmFjayh2bSwgb2xkUGFnZUNvdW50LCBuZXdQYWdlQ291bnQpOyB9KTsKKyAgICAgICAgICAg
IHJlc3VsdC0+YWRvcHQoV1RGTW92ZShtZW1vcnkpKTsKKyAgICAgICAgICAgIG1fZ2NCdWZmZXIu
YXBwZW5kV2l0aENyYXNoT25PdmVyZmxvdyhyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIGNhc2UgQXJyYXlCdWZmZXJUYWc6IHsK
ICAgICAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXI7CkBAIC0zNDM5LDYg
KzM0OTYsNyBAQCBjbGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV2FzbU1vZHVsZUFycmF5KiBtX3dhc21Nb2R1
bGVzOworICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSogbV93YXNtTWVtb3J5SGFuZGxlczsKICNl
bmRpZgogCiAgICAgU3RyaW5nIGJsb2JGaWxlUGF0aEZvckJsb2JVUkwoY29uc3QgU3RyaW5nJiBi
bG9iVVJMKQpAQCAtMzY2MSw2ICszNzE5LDcgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBjb25zdCBWZWMKICNl
bmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBzdGQ6OnVuaXF1ZV9wdHI8
V2FzbU1vZHVsZUFycmF5PiB3YXNtTW9kdWxlc0FycmF5CisgICAgICAgICwgc3RkOjp1bmlxdWVf
cHRyPFdhc21NZW1vcnlIYW5kbGVBcnJheT4gd2FzbU1lbW9yeUhhbmRsZXNBcnJheQogI2VuZGlm
CiAgICAgICAgICkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGJ1ZmZlcikpCkBAIC0zNjcyLDYgKzM3
MzEsNyBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0
b3I8dWludDhfdD4mJiBidWZmZXIsIGNvbnN0IFZlYwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQogICAgICwgbV93YXNtTW9kdWxlc0FycmF5KFdURk1vdmUod2FzbU1vZHVsZXNBcnJh
eSkpCisgICAgLCBtX3dhc21NZW1vcnlIYW5kbGVzQXJyYXkoV1RGTW92ZSh3YXNtTWVtb3J5SGFu
ZGxlc0FycmF5KSkKICNlbmRpZgogewogICAgIC8vIFNpbmNlIHRoaXMgU2VyaWFsaXplZFNjcmlw
dFZhbHVlIGlzIG1lYW50IHRvIGJlIHBhc3NlZCBiZXR3ZWVuIHRocmVhZHMsIGl0cyBTdHJpbmcg
ZGF0YSBtZW1iZXJzCkBAIC0zNzEwLDYgKzM3NzAsMTAgQEAgc2l6ZV90IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y29tcHV0ZU1lbW9yeUNvc3QoKSBjb25zdAogCiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogICAgIC8vIFdlIGFyZSBub3Qgc3VwcG9ydGluZyBXZWJBc3NlbWJseSBNb2R1bGUgbWVt
b3J5IGVzdGltYXRpb24geWV0LgorICAgIGlmIChtX3dhc21NZW1vcnlIYW5kbGVzQXJyYXkpIHsK
KyAgICAgICAgZm9yIChhdXRvJiBjb250ZW50IDogKm1fd2FzbU1lbW9yeUhhbmRsZXNBcnJheSkK
KyAgICAgICAgICAgIGNvc3QgKz0gY29udGVudC0+c2l6ZSgpOworICAgIH0KICNlbmRpZgogCiAg
ICAgZm9yIChhdXRvJiB1cmxzIDogbV9ibG9iVVJMcykKQEAgLTM4MDAsNiArMzg2NCw3IEBAIFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KEpTR2xvYmFsT2JqZWN0JiBsZXhpCiAgICAgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVy
Pj4gZHVtbXlBcnJheUJ1ZmZlcnM7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdhc21N
b2R1bGVBcnJheSBkdW1teU1vZHVsZXM7CisgICAgV2FzbU1lbW9yeUhhbmRsZUFycmF5IGR1bW15
TWVtb3J5SGFuZGxlczsKICNlbmRpZgogICAgIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSBkdW1t
eVNoYXJlZEJ1ZmZlcnM7CiAgICAgYXV0byBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxp
emUoJmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBkdW1teU1lc3NhZ2VQb3J0cywgZHVtbXlB
cnJheUJ1ZmZlcnMsIGR1bW15SW1hZ2VCaXRtYXBzLApAQCAtMzgwOCwxMSArMzg3MywxMyBAQCBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZShKU0dsb2JhbE9iamVjdCYgbGV4aQogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
ICAgICAgICBkdW1teU1vZHVsZXMsCisgICAgICAgIGR1bW15TWVtb3J5SGFuZGxlcywKICNlbmRp
ZgogICAgICAgICBibG9iVVJMcywgYnVmZmVyLCBTZXJpYWxpemF0aW9uQ29udGV4dDo6RGVmYXVs
dCwgZHVtbXlTaGFyZWRCdWZmZXJzKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKGR1bW15TW9kdWxlcy5pc0VtcHR5KCksICJXYXNtOjpNb2R1bGUg
c2VyaWFsaXphdGlvbiBpcyBvbmx5IGFsbG93ZWQgaW4gdGhlIHBvc3RNZXNzYWdlIGNvbnRleHQi
KTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGR1bW15TWVtb3J5SGFuZGxlcy5pc0VtcHR5KCks
ICJXYXNtOjpNZW1vcnkgc2VyaWFsaXphdGlvbiBpcyBvbmx5IGFsbG93ZWQgaW4gdGhlIHBvc3RN
ZXNzYWdlIGNvbnRleHQiKTsKICNlbmRpZgogCiAgICAgaWYgKHRocm93RXhjZXB0aW9ucyA9PSBT
ZXJpYWxpemF0aW9uRXJyb3JNb2RlOjpUaHJvd2luZykKQEAgLTM4NTksNyArMzkyNiw3IEBAIEV4
Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZShKU0dsb2JhbE9iCiAjZW5kaWYKICAgICBmb3IgKGF1dG8mIHRyYW5zZmVyYWJs
ZSA6IHRyYW5zZmVyTGlzdCkgewogICAgICAgICBpZiAoYXV0byBhcnJheUJ1ZmZlciA9IHRvUG9z
c2libHlTaGFyZWRBcnJheUJ1ZmZlcih2bSwgdHJhbnNmZXJhYmxlLmdldCgpKSkgewotICAgICAg
ICAgICAgaWYgKGFycmF5QnVmZmVyLT5pc0RldGFjaGVkKCkpCisgICAgICAgICAgICBpZiAoYXJy
YXlCdWZmZXItPmlzRGV0YWNoZWQoKSB8fCBhcnJheUJ1ZmZlci0+aXNTaGFyZWQoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRGF0YUNsb25lRXJyb3IgfTsKICAgICAgICAg
ICAgIGlmIChhcnJheUJ1ZmZlci0+aXNMb2NrZWQoKSkgewogICAgICAgICAgICAgICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTM5MDQsNiArMzk3MSw3IEBAIEV4
Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZShKU0dsb2JhbE9iCiAgICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHM7CiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdhc21Nb2R1bGVBcnJheSB3YXNtTW9kdWxlczsKKyAg
ICBXYXNtTWVtb3J5SGFuZGxlQXJyYXkgd2FzbU1lbW9yeUhhbmRsZXM7CiAjZW5kaWYKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJzID0g
bWFrZVVuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KCk7CiAgICAgYXV0byBjb2RlID0g
Q2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoJmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBt
ZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVycywgaW1hZ2VCaXRtYXBzLApAQCAtMzkxMSw3ICszOTc5
LDggQEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICAgICAgICAgb2Zmc2NyZWVuQ2FudmFzZXMs
CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgICAgIHdhc21Nb2R1bGVzLCAK
KyAgICAgICAgd2FzbU1vZHVsZXMsCisgICAgICAgIHdhc21NZW1vcnlIYW5kbGVzLAogI2VuZGlm
CiAgICAgICAgIGJsb2JVUkxzLCBidWZmZXIsIGNvbnRleHQsICpzaGFyZWRCdWZmZXJzKTsKIApA
QCAtMzkzNiw2ICs0MDA1LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICNlbmRpZgogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgICAgICAgICAsIG1ha2VVbmlxdWU8V2FzbU1v
ZHVsZUFycmF5Pih3YXNtTW9kdWxlcykKKyAgICAgICAgICAgICAgICAsIG1ha2VVbmlxdWU8V2Fz
bU1lbW9yeUhhbmRsZUFycmF5Pih3YXNtTWVtb3J5SGFuZGxlcykKICNlbmRpZgogICAgICAgICAg
ICAgICAgICkpOwogfQpAQCAtMzk5Myw2ICs0MDYzLDcgQEAgSlNWYWx1ZSBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmRlc2VyaWFsaXplKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LAogICAgICAgICAsIG1fYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LmdldCgpLCBtX2RhdGEsIGJs
b2JVUkxzLCBibG9iRmlsZVBhdGhzLCBtX3NoYXJlZEJ1ZmZlckNvbnRlbnRzQXJyYXkuZ2V0KCkK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgbV93YXNtTW9kdWxlc0FycmF5Lmdl
dCgpCisgICAgICAgICwgbV93YXNtTWVtb3J5SGFuZGxlc0FycmF5LmdldCgpCiAjZW5kaWYKICAg
ICAgICAgKTsKICAgICBpZiAodGhyb3dFeGNlcHRpb25zID09IFNlcmlhbGl6YXRpb25FcnJvck1v
ZGU6OlRocm93aW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaAppbmRleCBkMmEwYzRhMGI4M2RhZTg5MmRiNzk1MDZlZDMxNmRlYjM4
YTE2NTBkLi4wY2RiNDAxOGM4NDdmYTAwZmVkN2Y1ZmIwZmNiY2EzNTM5ODM1MjUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApA
QCAtNDEsNiArNDEsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVKU1ZhbHVlKiBKU1Zh
bHVlUmVmOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgV2FzbSB7CiBjbGFzcyBNb2R1bGU7CitjbGFzcyBNZW1vcnlIYW5kbGU7CiB9IH0KICNlbmRp
ZgogCkBAIC02MSw2ICs2Miw3IEBAIGVudW0gY2xhc3MgU2VyaWFsaXphdGlvbkNvbnRleHQgeyBE
ZWZhdWx0LCBXb3JrZXJQb3N0TWVzc2FnZSwgV2luZG93UG9zdE1lc3NhZ2UKIHVzaW5nIEFycmF5
QnVmZmVyQ29udGVudHNBcnJheSA9IFZlY3RvcjxKU0M6OkFycmF5QnVmZmVyQ29udGVudHM+Owog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIHVzaW5nIFdhc21Nb2R1bGVBcnJheSA9IFZlY3RvcjxS
ZWZQdHI8SlNDOjpXYXNtOjpNb2R1bGU+PjsKK3VzaW5nIFdhc21NZW1vcnlIYW5kbGVBcnJheSA9
IFZlY3RvcjxSZWZQdHI8SlNDOjpXYXNtOjpNZW1vcnlIYW5kbGU+PjsKICNlbmRpZgogCiBERUNM
QVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihTZXJpYWxpemVkU2NyaXB0VmFsdWUp
OwpAQCAtMTIyLDYgKzEyNCw3IEBAIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZXJpYWxpemVkU2NyaXB0VmFsdWU+CiAjZW5kaWYKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgc3RkOjp1bmlxdWVfcHRyPFdhc21Nb2R1
bGVBcnJheT4gPSBudWxscHRyCisgICAgICAgICwgc3RkOjp1bmlxdWVfcHRyPFdhc21NZW1vcnlI
YW5kbGVBcnJheT4gPSBudWxscHRyCiAjZW5kaWYKICAgICAgICAgKTsKIApAQCAtMTM2LDYgKzEz
OSw3IEBAIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxTZXJpYWxpemVkU2NyaXB0VmFsdWU+CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdhc21Nb2R1bGVBcnJheT4gbV93YXNtTW9kdWxl
c0FycmF5OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTWVtb3J5SGFuZGxlQXJyYXk+IG1fd2Fz
bU1lbW9yeUhhbmRsZXNBcnJheTsKICNlbmRpZgogICAgIFZlY3RvcjxTdHJpbmc+IG1fYmxvYlVS
THM7CiAgICAgc2l6ZV90IG1fbWVtb3J5Q29zdCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKaW5kZXggMDc2NjA4MzgwNzRl
MjZlYmY0MzFkNTFhOWFmMzEwMTljNTlhMDc2NC4uYTE0M2YzMDRiNGFjOTk1ZTdlMTJhNGI4ODcx
NGNiMzRlNjhhMTZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUpTQ2xpZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUpTQ2xpZW50RGF0YS5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIEpTVk1DbGllbnRE
YXRhOjpnZXRBbGxXb3JsZHMoVmVjdG9yPFJlZjxET01XcmFwcGVyV29ybGQ+PiYgd29ybGRzKQog
ICAgIH0KIH0KIAotdm9pZCBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKFZNKiB2bSkK
K3ZvaWQgSlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZChWTSogdm0sIFdvcmtlclRocmVh
ZFR5cGUgdHlwZSkKIHsKICAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IG5ldyBKU1ZN
Q2xpZW50RGF0YSgqdm0pOwogICAgIHZtLT5jbGllbnREYXRhID0gY2xpZW50RGF0YTsgLy8gflZN
IGRlbGV0ZXMgdGhpcyBwb2ludGVyLgpAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgSlNWTUNsaWVu
dERhdGE6OmluaXROb3JtYWxXb3JsZChWTSogdm0pCiAgICAgdm0tPmhlYXAuYWRkTWFya2luZ0Nv
bnN0cmFpbnQobWFrZVVuaXF1ZTxET01HQ091dHB1dENvbnN0cmFpbnQ+KCp2bSwgKmNsaWVudERh
dGEpKTsKIAogICAgIGNsaWVudERhdGEtPm1fbm9ybWFsV29ybGQgPSBET01XcmFwcGVyV29ybGQ6
OmNyZWF0ZSgqdm0sIERPTVdyYXBwZXJXb3JsZDo6VHlwZTo6Tm9ybWFsKTsKLSAgICB2bS0+bV90
eXBlZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBXZWJDb3JlVHlwZWRBcnJheUNvbnRy
b2xsZXIoKSk7CisgICAgdm0tPm1fdHlwZWRBcnJheUNvbnRyb2xsZXIgPSBhZG9wdFJlZihuZXcg
V2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyKHR5cGUgPT0gV29ya2VyVGhyZWFkVHlwZTo6RGVk
aWNhdGVkV29ya2VyIHx8IHR5cGUgPT0gV29ya2VyVGhyZWFkVHlwZTo6V29ya2xldCkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9XZWJDb3JlSlNDbGllbnREYXRhLmgKaW5kZXggYjg0NDBlODc3MGU0NzI5MWY3ZWUyMDYzMTk5
ZWEwNWMzYzRiYjBjMS4uMGRhNTMzMjcwNTA4MGM0OTEyN2MzNDRhYTAyMTkzMjVkYzY2Yzc0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEu
aApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1
ZGUgIldlYkNvcmVCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNCdWlsdGlucy5o
IgorI2luY2x1ZGUgIldvcmtlclRocmVhZFR5cGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNDAsNyArNDEsNyBAQCBjbGFzcyBKU1ZN
Q2xpZW50RGF0YSA6IHB1YmxpYyBKU0M6OlZNOjpDbGllbnREYXRhIHsKIAogICAgIHZpcnR1YWwg
fkpTVk1DbGllbnREYXRhKCk7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
aW5pdE5vcm1hbFdvcmxkKEpTQzo6Vk0qKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9p
ZCBpbml0Tm9ybWFsV29ybGQoSlNDOjpWTSosIFdvcmtlclRocmVhZFR5cGUpOwogCiAgICAgRE9N
V3JhcHBlcldvcmxkJiBub3JtYWxXb3JsZCgpIHsgcmV0dXJuICptX25vcm1hbFdvcmxkOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVUeXBlZEFycmF5
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRB
cnJheUNvbnRyb2xsZXIuY3BwCmluZGV4IGMxOGZhOGUzNjQ4YTQ2NmJlYTJjMWY4Yzg5M2QxNTNm
MDk4NzQwZWQuLjZkMDE2Yzg2YWM3OTFlNTUwYTIxNDIwMGRlM2JkOWIzZWI4MTc0YjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVUeXBlZEFycmF5Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJy
YXlDb250cm9sbGVyLmNwcApAQCAtMzQsNyArMzQsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXI6OldlYkNvcmVUeXBlZEFycmF5Q29udHJv
bGxlcigpID0gZGVmYXVsdDsKK1dlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcjo6V2ViQ29yZVR5
cGVkQXJyYXlDb250cm9sbGVyKGJvb2wgYWxsb3dBdG9taWNzV2FpdCkKKyAgICA6IG1fYWxsb3dB
dG9taWNzV2FpdChhbGxvd0F0b21pY3NXYWl0KQoreworfQogCiBXZWJDb3JlVHlwZWRBcnJheUNv
bnRyb2xsZXI6On5XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIoKSA9IGRlZmF1bHQ7CiAKQEAg
LTUwLDcgKzUzLDcgQEAgdm9pZCBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXI6OnJlZ2lzdGVy
V3JhcHBlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKIAogYm9vbCBXZWJDb3JlVHlw
ZWRBcnJheUNvbnRyb2xsZXI6OmlzQXRvbWljc1dhaXRBbGxvd2VkT25DdXJyZW50VGhyZWFkKCkK
IHsKLSAgICByZXR1cm4gIWlzTWFpblRocmVhZCgpOworICAgIHJldHVybiBtX2FsbG93QXRvbWlj
c1dhaXQ7CiB9CiAKIGJvb2wgV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyOjpKU0FycmF5QnVm
ZmVyT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4gaGFuZGxlLCB2b2lkKiwgSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvciwgY29uc3QgY2hh
cioqIHJlYXNvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNv
cmVUeXBlZEFycmF5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmgKaW5kZXggZmFhYzIyNjIyMTJlNTM2OGIwOGFjMjkw
ZmQ4MDliYTY4NGMyZGM2MC4uNTExOWFkMWYzYTJlZWQxMTAzODVmNWEyNTQwM2FhMmY1N2EwYmM5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJy
YXlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZVR5
cGVkQXJyYXlDb250cm9sbGVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIgOiBwdWJsaWMgSlNDOjpUeXBl
ZEFycmF5Q29udHJvbGxlciB7CiBwdWJsaWM6Ci0gICAgV2ViQ29yZVR5cGVkQXJyYXlDb250cm9s
bGVyKCk7CisgICAgV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyKGJvb2wgYWxsb3dBdG9taWNz
V2FpdCk7CiAgICAgdmlydHVhbCB+V2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyKCk7CiAgICAg
CiAgICAgSlNDOjpKU0FycmF5QnVmZmVyKiB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpBcnJheUJ1ZmZlciopIG92ZXJyaWRlOwpAQCAtNTMsNiAr
NTMsNyBAQCBjbGFzcyBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIgOiBwdWJsaWMgSlNDOjpU
eXBlZEFycmF5Q29udHJvbGxlciB7CiAgICAgfTsKIAogICAgIEpTQXJyYXlCdWZmZXJPd25lciBt
X293bmVyOworICAgIGJvb2wgbV9hbGxvd0F0b21pY3NXYWl0OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQppbmRleCAyN2M3OTdkMzQwZGI0NmI3ZTMxYmE2ZGJlYjI5MWNjNDM5MjU4
MDFkLi41MTYzY2NjY2I5MDczYmJmYzg3OGJlMTdmNmI5NWZkMTU3ZDIwODljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAt
Njk4Nyw2ICs2OTg3LDcgQEAgc3ViIElzQW5ub3RhdGVkVHlwZQogICAgIHJldHVybiAxIGlmICR0
eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ307CiAgICAg
cmV0dXJuIDEgaWYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0F0b21TdHJpbmd9OwogICAg
IHJldHVybiAxIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZXF1aXJlc0V4aXN0aW5n
QXRvbVN0cmluZ307CisgICAgcmV0dXJuIDEgaWYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0FsbG93U2hhcmVkfTsKIH0KIAogc3ViIEdldEFubm90YXRlZElETFR5cGUKQEAgLTY5OTgsNiAr
Njk5OSw3IEBAIHN1YiBHZXRBbm5vdGF0ZWRJRExUeXBlCiAgICAgcmV0dXJuICJJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3IiIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ307CiAgICAgcmV0dXJuICJJRExBdG9tU3RyaW5nQWRhcHRv
ciIgaWYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0F0b21TdHJpbmd9OwogICAgIHJldHVy
biAiSURMUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmdBZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57UmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmd9OworICAgIHJldHVybiAi
SURMQWxsb3dTaGFyZWRBZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57QWxs
b3dTaGFyZWR9OwogfQogCiBzdWIgR2V0QmFzZUlETFR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KaW5kZXggYzhlY2ZmMzg2YzIz
Y2Y2Mjg0ZTlhYWU3MDRjNGM2YWY2ODRiMjA0OS4uNGUwM2U5ZmE0YWEzMWI0Y2U4YmVkY2NkMGI4
YzAyOWQ0MzJmNTlmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExBdHRyaWJ1dGVzLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExBdHRyaWJ1dGVzLmpzb24KQEAgLTI0LDggKzI0LDcgQEAKICAgICAgICAgICAgICJjb250
ZXh0c0FsbG93ZWQiOiBbInR5cGUiXSwKICAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKICAgICAg
ICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0FsbG93
U2hhcmVkIgotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJ1bnN1cHBvcnRlZCI6IHRydWUK
KyAgICAgICAgICAgIH0KICAgICAgICAgfSwKICAgICAgICAgIkFwcGxlQ29weXJpZ2h0Ijogewog
ICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIiwgImF0dHJpYnV0ZSIs
ICJvcGVyYXRpb24iXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA4NDI1ZTMwMTBmNjUzNmJjMjIwNGMxOGU5MDVh
MjMxYjIzOWQwYjdjLi5mODgxMTUwMTZlZjg2OWI4NmM4M2NhNzE4ODJlYjhkMzgwMDY5YzM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcApAQCAtMTYwMiw2ICsxNjAyLDcgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdHJhaWxpbmdfZGFzaF9oeXBoZW4K
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uX2xlYWRpbmdfdW5kZXJzY29yZV9mdW5jdGlvbik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9kb3VibGVfbGVhZGluZ191bmRl
cnNjb3JlX2Z1bmN0aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uX3RyYWlsaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb25fKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
X2VuY29kZUludG8pOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25fdG9TdHJpbmcpOwogCiAvLyBBdHRyaWJ1dGVzCkBAIC0yMzMzLDYg
KzIzMzQsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90eXBl
VGFibGVWYWx1ZXNbXSA9CiAgICAgeyAibGVhZGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbl9sZWFkaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb24pLCAoaW50
cHRyX3QpICgwKSB9IH0sCiAgICAgeyAiX2RvdWJsZV9sZWFkaW5nX3VuZGVyc2NvcmVfZnVuY3Rp
b24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2RvdWJsZV9sZWFkaW5nX3VuZGVyc2NvcmVf
ZnVuY3Rpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAidHJhaWxpbmdfdW5kZXJzY29y
ZV9mdW5jdGlvbl8iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3RyYWlsaW5nX3VuZGVyc2Nv
cmVfZnVuY3Rpb25fKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgImVuY29kZUludG8iLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2VuY29kZUludG8pLCAoaW50cHRyX3QpICgxKSB9IH0s
CiAgICAgeyAidG9TdHJpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3RvU3RyaW5nKSwg
KGludHB0cl90KSAoMCkgfSB9LAogI2lmIEVOQUJMRShDb25kaXRpb24xKQogICAgIHsgIkNPTkRJ
VElPTkFMX0NPTlNUIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29u
c3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgwKSB9IH0sCkBAIC05NDk3
LDYgKzk0OTksMjYgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uX3RyYWlsaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb24KICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdHJhaWxp
bmdfdW5kZXJzY29yZV9mdW5jdGlvbl9Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxG
cmFtZSwgInRyYWlsaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb25fIik7CiB9CiAKK3N0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9lbmNvZGVJ
bnRvQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNh
bGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJB
TShjYWxsRnJhbWUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Cisg
ICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgIEVu
c3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApOworICAgIGF1dG8gZGVzdGluYXRpb24gPSBjb252ZXJ0PElETEFsbG93U2hhcmVkQWRh
cHRvcjxJRExVaW50OEFycmF5Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1
ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRo
cm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgc2NvcGUsIDAsICJkZXN0aW5hdGlvbiIsICJUZXN0T2JqZWN0IiwgImVuY29kZUludG8i
LCAiVWludDhBcnJheSIpOyB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLmVuY29kZUludG8oZGVzdGluYXRp
b24ucmVsZWFzZU5vbk51bGwoKSkpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9lbmNvZGVJbnRvLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
ZW5jb2RlSW50b0JvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAiZW5jb2Rl
SW50byIpOworfQorCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25fdG9TdHJpbmdCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAppbmRleCA0MjcwZWYyNTky
MDgwNDVjNzFmMjQwMWVjYzAwMmE3MzU5NzY4YzUwLi5kYTNhY2IzMTE0ZDg4ZGExMWRkZmU4ZWQz
NDBkMDg3MjUxOGY4M2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdE9iai5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC00NjcsNiArNDY3LDggQEAgZW51bSBUZXN0Q29uZmlkZW5j
ZSB7ICJoaWdoIiwgImtpbmRhLWxvdyIgfTsKICAgICB1bmRlZmluZWQgX2xlYWRpbmdfdW5kZXJz
Y29yZV9mdW5jdGlvbigpOyAvLyBOT1RFOiBXZWJJREwgcmVtb3ZlcyB0aGUgbGVhZGluZyB1bmRl
cnNjb3JlIHNvIHRoaXMgaXMgaW50ZXJwcmV0ZWQgYXMgImxlYWRpbmdfdW5kZXJzY29yZV9mdW5j
dGlvbiIKICAgICB1bmRlZmluZWQgX19kb3VibGVfbGVhZGluZ191bmRlcnNjb3JlX2Z1bmN0aW9u
KCk7IC8vIE5PVEU6IFdlYklETCByZW1vdmVzIHRoZSBsZWFkaW5nIHVuZGVyc2NvcmUgc28gdGhp
cyBpcyBpbnRlcnByZXRlZCBhcyAiX2RvdWJsZV9sZWFkaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb24i
CiAgICAgdW5kZWZpbmVkIHRyYWlsaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb25fKCk7CisKKyAgICBi
b29sZWFuIGVuY29kZUludG8oW0FsbG93U2hhcmVkXSBVaW50OEFycmF5IGRlc3RpbmF0aW9uKTsK
IH07CiAKIC8vIFRoZSBmb2xsb3dpbmcgY29tbWVudHMgc2hvdWxkIG5vdCBnZW5lcmF0ZSBhbnkg
Y29kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2Rlci5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXIuaWRsCmluZGV4IGRiMzRjYjJlOGE2NTRlODA2
MjllM2U2NDM0N2U0NWJjMDdjNTU0NjEuLjIxNGFkN2UzYjA2M2VhMTdjNzk5MTA2MTlhMGFhNDI3
YWQ3ZDUxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2Rlci5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmlkbApAQCAtNDEsNSArNDEsNSBA
QCBkaWN0aW9uYXJ5IFRleHREZWNvZGVPcHRpb25zIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGVuY29kaW5nOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGZhdGFs
OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlnbm9yZUJPTTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIFVTVlN0cmluZyBkZWNvZGUob3B0aW9uYWwgQnVmZmVyU291cmNlPyBpbnB1
dCwgb3B0aW9uYWwgVGV4dERlY29kZU9wdGlvbnMgb3B0aW9ucyk7CisgICAgW01heVRocm93RXhj
ZXB0aW9uXSBVU1ZTdHJpbmcgZGVjb2RlKG9wdGlvbmFsIFtBbGxvd1NoYXJlZF0gQnVmZmVyU291
cmNlPyBpbnB1dCwgb3B0aW9uYWwgVGV4dERlY29kZU9wdGlvbnMgb3B0aW9ucyk7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyU3RyZWFtRGVjb2Rlci5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXJTdHJlYW1EZWNvZGVyLmlkbAppbmRleCA0
M2MxOWU3YTY0NDk2ZDJhNWY1MDEwODdjOTViNzYxMDBmZjRjZTAxLi5kM2ViN2VkY2M3OGI1ODIy
YjJiYmRjNGJjZTQ1ZDY5YjNlOGI0N2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VGV4dERlY29kZXJTdHJlYW1EZWNvZGVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4
dERlY29kZXJTdHJlYW1EZWNvZGVyLmlkbApAQCAtMzIsNiArMzIsNiBAQAogICAgIGNvbnN0cnVj
dG9yKERPTVN0cmluZyBsYWJlbCwgYm9vbGVhbiBmYXRhbCwgYm9vbGVhbiBpZ25vcmVCT00pOwog
CiAgICAgW1ByaXZhdGVJZGVudGlmaWVyXSBET01TdHJpbmcgZW5jb2RpbmcoKTsKLSAgICBbUHJp
dmF0ZUlkZW50aWZpZXIsIE1heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgZGVjb2RlKEJ1ZmZl
clNvdXJjZSBzb3VyY2UpOworICAgIFtQcml2YXRlSWRlbnRpZmllciwgTWF5VGhyb3dFeGNlcHRp
b25dIERPTVN0cmluZyBkZWNvZGUoW0FsbG93U2hhcmVkXSBCdWZmZXJTb3VyY2Ugc291cmNlKTsK
ICAgICBbUHJpdmF0ZUlkZW50aWZpZXIsIE1heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgZmx1
c2goKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXIuaWRs
IGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmlkbAppbmRleCAwNWQ4MjZkODJiMjk5
M2Y4MTk4OTYxMGMwZWFkMTk0YjBjNmM0Yjk0Li42YmNiODk1ZThiMGRhNTIyYjhiNWI0YzVjMjA2
YjdiZjZjY2U3YWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXIu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2Rlci5pZGwKQEAgLTM5LDUgKzM5
LDUgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGVuY29kaW5nOwogCiAgICAg
W05ld09iamVjdF0gVWludDhBcnJheSBlbmNvZGUob3B0aW9uYWwgVVNWU3RyaW5nIGlucHV0ID0g
IiIpOwotICAgIFRleHRFbmNvZGVyRW5jb2RlSW50b1Jlc3VsdCBlbmNvZGVJbnRvKFVTVlN0cmlu
ZyBzb3VyY2UsIFVpbnQ4QXJyYXkgZGVzdGluYXRpb24pOworICAgIFRleHRFbmNvZGVyRW5jb2Rl
SW50b1Jlc3VsdCBlbmNvZGVJbnRvKFVTVlN0cmluZyBzb3VyY2UsIFtBbGxvd1NoYXJlZF0gVWlu
dDhBcnJheSBkZXN0aW5hdGlvbik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCBlZjFkOGJjYWRhMjViYzI1
ZjE1MTdlNzg4OWUyNDFjM2U0OWUzZGFlLi43ZGI0OWZlNGIzMzY2Y2E2NjgzZjRiNTcxZDFiNzVi
OTljNWE0MTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBSZWY8RGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGU+IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUoY29uc3Qg
V29ya2VyUAogfQogCiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6RGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUoY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1zLCBSZWY8U2VjdXJpdHlP
cmlnaW4+JiYgb3JpZ2luLCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQmIHRocmVhZCwgUmVmPFNlY3Vy
aXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNv
bm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKQotICAgIDogV29y
a2VyR2xvYmFsU2NvcGUocGFyYW1zLCBXVEZNb3ZlKG9yaWdpbiksIHRocmVhZCwgV1RGTW92ZSh0
b3BPcmlnaW4pLCBjb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyKQorICAgIDogV29ya2Vy
R2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZTo6RGVkaWNhdGVkV29ya2VyLCBwYXJhbXMsIFdU
Rk1vdmUob3JpZ2luKSwgdGhyZWFkLCBXVEZNb3ZlKHRvcE9yaWdpbiksIGNvbm5lY3Rpb25Qcm94
eSwgc29ja2V0UHJvdmlkZXIpCiAgICAgLCBtX25hbWUocGFyYW1zLm5hbWUpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDUwMmVjN2Q3
NzYzNTVmOTZlMGRlOGRjOGM0MzkxNTgxZjkwNmY2MDcuLjZmMGY2MmQ3ODNjOTQ4MWRiYWIxZWY5
ZTM4ZTU3OWY0MGFhMWQyMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xv
YmFsU2NvcGUuY3BwCkBAIC01OSw4ICs1OSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXb3JrZXJHbG9iYWxTY29wZSk7CiAKLVdv
cmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShjb25zdCBXb3JrZXJQYXJhbWV0ZXJz
JiBwYXJhbXMsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFdvcmtlclRocmVhZCYgdGhy
ZWFkLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5l
Y3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlk
ZXIpCi0gICAgOiBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShKU0M6OlZNOjpjcmVhdGUoKSwg
JnRocmVhZCkKK1dvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJUaHJl
YWRUeXBlIHR5cGUsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmIG9yaWdpbiwgV29ya2VyVGhyZWFkJiB0aHJlYWQsIFJlZjxTZWN1cml0eU9yaWdp
bj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9u
UHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikKKyAgICA6IFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKHR5cGUsIEpTQzo6Vk06OmNyZWF0ZSgpLCAmdGhyZWFkKQogICAgICwg
bV91cmwocGFyYW1zLnNjcmlwdFVSTCkKICAgICAsIG1faWRlbnRpZmllcihwYXJhbXMuaWRlbnRp
ZmllcikKICAgICAsIG1fdXNlckFnZW50KHBhcmFtcy51c2VyQWdlbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggZDkyMjFkYjlmNTg2N2EyYzBiMjg5
YzMzOGQzZDQ0MjBmODM2NDZjMC4uN2FiMDlmNmFmMzNlNDViMjIzNzM4NmEzMDYzMTAxYjllNTZm
M2QxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaApAQCAt
MTI2LDcgKzEyNiw3IEBAIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlIDogcHVibGljIFN1cHBsZW1l
bnRhYmxlPFdvcmtlckdsb2JhbFNjb3BlPiwgcHVibGljIEJhc2U2CiAgICAgYm9vbCB3ZWJHTEVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3dlYkdMRW5hYmxlZDsgfQogCiBwcm90ZWN0ZWQ6Ci0g
ICAgV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0
eU9yaWdpbj4mJiwgV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdp
biwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciopOworICAg
IFdvcmtlckdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5cGUsIGNvbnN0IFdvcmtlclBhcmFtZXRl
cnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFdvcmtlclRocmVhZCYsIFJlZjxTZWN1cml0eU9y
aWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0
UHJvdmlkZXIqKTsKIAogICAgIHZvaWQgYXBwbHlDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZS5jcHAKaW5kZXggZjQ0OWFjMDJiZTgwY2Y0OGZiODI5MmM0MjlhYjJjMmU2YjNmYjBiNi4u
MjM4NGE1YThjN2QyYTMwMmVlZTVjYjQwNWUxMDVlMDI1Yzk4NDNjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAg
LTM3LDggKzM3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpOwogCi1Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZTo6V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoUmVmPEpTQzo6Vk0+JiYgdm0s
IFdvcmtlck9yV29ya2xldFRocmVhZCogdGhyZWFkKQotICAgIDogbV9zY3JpcHQobWFrZVVuaXF1
ZTxXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyPihXVEZNb3ZlKHZtKSwgdGhpcykpCitX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoV29y
a2VyVGhyZWFkVHlwZSB0eXBlLCBSZWY8SlNDOjpWTT4mJiB2bSwgV29ya2VyT3JXb3JrbGV0VGhy
ZWFkKiB0aHJlYWQpCisgICAgOiBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXI+KHR5cGUsIFdURk1vdmUodm0pLCB0aGlzKSkKICAgICAsIG1fdGhyZWFk
KHRocmVhZCkKICAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihtYWtlVW5pcXVlPFdvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCBmMGM5MGMyMjE5YmZlNDky
NmM4Mjg3MTM2NmMzODkwOWM2MWY3NDg1Li42YzI0NGEwYzQyN2VlMWM4YzY1ZmRjYzc2NTk1MmY4
NzdmZDliMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJFdmVudFRh
cmdldC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJX
b3JrZXJUaHJlYWRUeXBlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjcsNyArNjgs
NyBAQCBjbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBwdWJsaWMgUmVmQ291bgogICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKSB7
IH0KIAogcHJvdGVjdGVkOgotICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFJlZjxKU0M6
OlZNPiYmLCBXb3JrZXJPcldvcmtsZXRUaHJlYWQqKTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZShXb3JrZXJUaHJlYWRUeXBlLCBSZWY8SlNDOjpWTT4mJiwgV29ya2VyT3JXb3JrbGV0
VGhyZWFkKik7CiAKICAgICAvLyBTY3JpcHRFeGVjdXRpb25Db250ZXh0LgogICAgIGJvb2wgaXNK
U0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKaW5k
ZXggNDAxZDVmMmY0MGI3YjdiZGU4ZTYzMzY2MmFkMzFmYjFjZDNmMjg2MS4uY2Q0ZWMyNDY4MjUy
NWFhYmM2NDJkODc3YTBkYTAxMWViZGUxMTQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC01
MCwxNyArNTAsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSlND
OwogCi1Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyKFJlZjxWTT4mJiB2bSwgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGds
b2JhbFNjb3BlKQorV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6V29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcihXb3JrZXJUaHJlYWRUeXBlIHR5cGUsIFJlZjxWTT4mJiB2bSwg
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGdsb2JhbFNjb3BlKQogICAgIDogbV92bShXVEZN
b3ZlKHZtKSkKICAgICAsIG1fZ2xvYmFsU2NvcGUoZ2xvYmFsU2NvcGUpCiAgICAgLCBtX2dsb2Jh
bFNjb3BlV3JhcHBlcigqbV92bSkKIHsKICAgICBtX3ZtLT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsg
Ly8gSXQncyBub3QgY2xlYXIgdGhhdCB3ZSBoYXZlIGdvb2QgZGlzY2lwbGluZSBmb3IgaGVhcCBh
Y2Nlc3MsIHNvIHR1cm4gaXQgb24gcGVybWFuZW50bHkuCi0gICAgSlNWTUNsaWVudERhdGE6Omlu
aXROb3JtYWxXb3JsZChtX3ZtLmdldCgpKTsKKyAgICBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1h
bFdvcmxkKG1fdm0uZ2V0KCksIHR5cGUpOwogfQogCi1Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250
cm9sbGVyOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKiBnbG9iYWxTY29wZSkKLSAgICA6IFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRy
b2xsZXIoSlNDOjpWTTo6Y3JlYXRlKCksIGdsb2JhbFNjb3BlKQorV29ya2VyT3JXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlcjo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcihXb3JrZXJUaHJl
YWRUeXBlIHR5cGUsIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiBnbG9iYWxTY29wZSkKKyAg
ICA6IFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIodHlwZSwgSlNDOjpWTTo6Y3JlYXRl
KCksIGdsb2JhbFNjb3BlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGVlNTc5N2JkYzA2
YjJhODc1MGM4ODIxMGU3MDJjYjUzNjA4ZTRlOTQuLmM0OTMwMWFlZDNkZDA4OWRhNzk3MzI3NjBj
YWYyZjdiNjRkYjExYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
T3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCkBAIC0yNiw2ICsyNiw3IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkVHlwZS5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0RlYnVnZ2VyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSdW5M
b29wVGltZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNTEsOCArNTIsOCBAQCBj
bGFzcyBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKTsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyKFJlZjxKU0M6OlZNPiYmLCBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSopOwotICAgIGV4
cGxpY2l0IFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIoV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUqKTsKKyAgICBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKFdvcmtlclRo
cmVhZFR5cGUsIFJlZjxKU0M6OlZNPiYmLCBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSopOwor
ICAgIGV4cGxpY2l0IFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIoV29ya2VyVGhyZWFk
VHlwZSwgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqKTsKICAgICB+V29ya2VyT3JXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcigpOwogCiAgICAgdm9pZCByZWxlYXNlSGVhcEFjY2VzcygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWRUeXBlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODMwNjVi
ZWExYzYzZjkxNzU2MjMxYTI3ZTQ0OGI5ZGEyYjlkYzllCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWRUeXBlLmgKQEAgLTAsMCArMSwzNyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0g
Y2xhc3MgV29ya2VyVGhyZWFkVHlwZSA6IHVpbnQ4X3QgeworICAgIE1haW4sCisgICAgV29ya2xl
dCwKKyAgICBEZWRpY2F0ZWRXb3JrZXIsCisgICAgU2VydmljZVdvcmtlciwKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggY2U1NzlmN2M1MzE4
NDAzNzIxYzFhMzNjYjkwNTFhOGU0NTA1ZmRkOC4uOGQ3M2ZmMzU1YmExMGI4YjEyNTAxYTk2OTUz
YmY0ZjQwODE1NWEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAg
UmVmPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4gU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpj
cmVhdGUoY29uc3QgU2VydmljZVdvcmsKIH0KIAogU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBk
YXRhLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxTZWN1cml0eU9yaWdpbj4m
JiBvcmlnaW4sIFNlcnZpY2VXb3JrZXJUaHJlYWQmIHRocmVhZCwgUmVmPFNlY3VyaXR5T3JpZ2lu
PiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Q
cm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKQotICAgIDogV29ya2VyR2xvYmFs
U2NvcGUocGFyYW1zLCBXVEZNb3ZlKG9yaWdpbiksIHRocmVhZCwgV1RGTW92ZSh0b3BPcmlnaW4p
LCBjb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyKQorICAgIDogV29ya2VyR2xvYmFsU2Nv
cGUoV29ya2VyVGhyZWFkVHlwZTo6U2VydmljZVdvcmtlciwgcGFyYW1zLCBXVEZNb3ZlKG9yaWdp
biksIHRocmVhZCwgV1RGTW92ZSh0b3BPcmlnaW4pLCBjb25uZWN0aW9uUHJveHksIHNvY2tldFBy
b3ZpZGVyKQogICAgICwgbV9jb250ZXh0RGF0YShjcm9zc1RocmVhZENvcHkoZGF0YSkpCiAgICAg
LCBtX3JlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpnZXRPckNyZWF0ZSgq
dGhpcywgbmF2aWdhdG9yKCkuc2VydmljZVdvcmtlcigpLCBXVEZNb3ZlKG1fY29udGV4dERhdGEu
cmVnaXN0cmF0aW9uKSkpCiAgICAgLCBtX2NsaWVudHMoU2VydmljZVdvcmtlckNsaWVudHM6OmNy
ZWF0ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5j
cHAKaW5kZXggZDAyODM0MjBhZDczMTdhZmE5OTdhMGU0OGUyYTg3NTU1Y2I3MjRkZC4uN2IwMDk5
MzE1YzY0MzQ4MDhmYmFkNmZiMDMxNWM0MzQ3YzJkY2EzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChXb3JrbGV0R2xvYmFsU2NvcGUpOwogc3RhdGljIHN0ZDo6
YXRvbWljPHVuc2lnbmVkPiBnTnVtYmVyT2ZXb3JrbGV0R2xvYmFsU2NvcGVzIHsgMCB9OwogCiBX
b3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZShXb3JrZXJPcldvcmtsZXRUaHJl
YWQmIHRocmVhZCwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCi0gICAgOiBX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShKU0M6OlZNOjpjcmVhdGUoKSwgJnRocmVhZCkKKyAg
ICA6IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5cGU6OldvcmtsZXQs
IEpTQzo6Vk06OmNyZWF0ZSgpLCAmdGhyZWFkKQogICAgICwgbV90b3BPcmlnaW4oU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZVVuaXF1ZSgpKQogICAgICwgbV91cmwocGFyYW1ldGVycy53aW5kb3dVUkwp
CiAgICAgLCBtX2pzUnVudGltZUZsYWdzKHBhcmFtZXRlcnMuanNSdW50aW1lRmxhZ3MpCkBAIC02
Miw3ICs2Miw3IEBAIFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKFdvcmtl
ck9yV29ya2xldFRocmVhZCYgdGhyZWFkLCBjb25zdCBXb3JrCiB9CiAKIFdvcmtsZXRHbG9iYWxT
Y29wZTo6V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPEpTQzo6Vk0+
JiYgdm0sIFNjcmlwdFNvdXJjZUNvZGUmJiBjb2RlKQotICAgIDogV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUoV1RGTW92ZSh2bSksIG51bGxwdHIpCisgICAgOiBXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZShXb3JrZXJUaHJlYWRUeXBlOjpXb3JrbGV0LCBXVEZNb3ZlKHZtKSwgbnVsbHB0cikK
ICAgICAsIG1fZG9jdW1lbnQobWFrZVdlYWtQdHIoZG9jdW1lbnQpKQogICAgICwgbV90b3BPcmln
aW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKQogICAgICwgbV91cmwoY29kZS51cmwo
KSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDY4ZjAxN2QyZTE1YzY5YjZhNzEz
OTkyNjQzMTU4NjQ4MzM4OTc5YTAuLjcwMzZlZjUxODYxNGNmMDBiZGM4OGQyYTI2YjI5OGVkYjJj
MWVjMmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDIwLTExLTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAg
W0pTQ10gSW1wbGVtZW50IFdlYkFzc2VtYmx5Lk1lbW9yeSB3aXRoIHNoYXJlZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NjkzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRp
b24td2l0aC10aGUtamF2YXNjcmlwdC1hZ2VudC1mb3JtYWxpc20vcmVxdWlyZXMtc3VjY2Vzcy5h
bnkud29ya2VyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2Fz
bS9qc2FwaS9tZW1vcnkvY29uc3RydWN0b3IuYW55LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvY29uc3RydWN0b3IuYW55Lndvcmtl
ci1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkv
bWVtb3J5L2dyb3cuYW55LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvd2FzbS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9i
dWZmZXItaW50ZXJmYWNlL2F1ZGlvYnVmZmVyLWNvcHktY2hhbm5lbC1leHBlY3RlZC50eHQ6CisK
IDIwMjAtMTEtMTQgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZW1v
dmUgLXdlYmtpdC1hc3BlY3QtcmF0aW8gc3VwcG9ydApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5n
L3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWFnZW50
LWZvcm1hbGlzbS9yZXF1aXJlcy1zdWNjZXNzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMv
c2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2Ny
aXB0LWFnZW50LWZvcm1hbGlzbS9yZXF1aXJlcy1zdWNjZXNzLmFueS53b3JrZXItZXhwZWN0ZWQu
dHh0CmluZGV4IDBiOTg2MGNjYzUzNDRmNTJkZDc4NDUyMTBiOWQ0MjNjMjVjMTQyODkuLjU1OWYw
ZmU0MjI5NmY2YWNhNGEwZmEwNTI3NjI5MTNlNjhjNzRkMzggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3Njcmlw
dGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1h
Z2VudC1mb3JtYWxpc20vcmVxdWlyZXMtc3VjY2Vzcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2Vi
YXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhl
LWphdmFzY3JpcHQtYWdlbnQtZm9ybWFsaXNtL3JlcXVpcmVzLXN1Y2Nlc3MuYW55Lndvcmtlci1l
eHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgW1tDYW5CbG9ja11dIGluIGEgRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUgVHlwZWQgYXJyYXkgZm9yIHdhaXQvbm90aWZ5IG11c3Qg
d3JhcCBhIFNoYXJlZEFycmF5QnVmZmVyLgorUEFTUyBbW0NhbkJsb2NrXV0gaW4gYSBEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFueS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFueS1leHBlY3RlZC50eHQKaW5kZXggOWEy
NDkwNTdmNDk4MjY0OTQ2ZmJiZTYzMThhZjczMmJhZDVhN2RlZS4uNGJiNDk0MmExYWVjYmRlNmRk
Mjc3YWQwYjRmYmE4MjhlMWY5ZDA0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5hbnkt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvY29uc3RydWN0b3IuYW55LWV4cGVjdGVkLnR4dApAQCAt
MTgsMTIgKzE4LDEyIEBAIFBBU1MgT3V0LW9mLXJhbmdlIG1heGltdW0gdmFsdWUgaW4gZGVzY3Jp
cHRvcjogNDI5NDk2NzI5NgogUEFTUyBPdXQtb2YtcmFuZ2UgaW5pdGlhbCB2YWx1ZSBpbiBkZXNj
cmlwdG9yOiA2ODcxOTQ3NjczNgogUEFTUyBPdXQtb2YtcmFuZ2UgbWF4aW11bSB2YWx1ZSBpbiBk
ZXNjcmlwdG9yOiA2ODcxOTQ3NjczNgogUEFTUyBJbml0aWFsIHZhbHVlIGV4Y2VlZHMgbWF4aW11
bQotRkFJTCBTaGFyZWQgbWVtb3J5IHdpdGhvdXQgbWF4aW11bSBhc3NlcnRfdGhyb3dzX2pzOiBm
dW5jdGlvbiAiKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7ICJpbml0aWFsIjogMTAsICJz
aGFyZWQiOiB0cnVlIH0pIiBkaWQgbm90IHRocm93CitQQVNTIFNoYXJlZCBtZW1vcnkgd2l0aG91
dCBtYXhpbXVtCiBQQVNTIFByb3h5IGRlc2NyaXB0b3IKIFBBU1MgT3JkZXIgb2YgZXZhbHVhdGlv
biBmb3IgZGVzY3JpcHRvcgotRkFJTCBPcmRlciBvZiBldmFsdWF0aW9uIGZvciBkZXNjcmlwdG9y
ICh3aXRoIHNoYXJlZCkgYXNzZXJ0X2FycmF5X2VxdWFsczogbGVuZ3RocyBkaWZmZXIsIGV4cGVj
dGVkIGFycmF5IFsiaW5pdGlhbCIsICJpbml0aWFsIHZhbHVlT2YiLCAibWF4aW11bSIsICJtYXhp
bXVtIHZhbHVlT2YiLCAic2hhcmVkIl0gbGVuZ3RoIDUsIGdvdCBbImluaXRpYWwiLCAiaW5pdGlh
bCB2YWx1ZU9mIiwgIm1heGltdW0iLCAibWF4aW11bSB2YWx1ZU9mIl0gbGVuZ3RoIDQKK1BBU1Mg
T3JkZXIgb2YgZXZhbHVhdGlvbiBmb3IgZGVzY3JpcHRvciAod2l0aCBzaGFyZWQpCiBQQVNTIFpl
cm8gaW5pdGlhbAogUEFTUyBOb24temVybyBpbml0aWFsCi1GQUlMIFN0cmF5IGFyZ3VtZW50IFdl
YkFzc2VtYmx5Lk1lbW9yeSBleHBlY3RzIGV4YWN0bHkgb25lIGFyZ3VtZW50Ci1GQUlMIFNoYXJl
ZCBtZW1vcnkgYXNzZXJ0X2VxdWFsczogcHJvdG90eXBlIG9mIGJ1ZmZlciBleHBlY3RlZCBvYmpl
Y3QgIltvYmplY3QgU2hhcmVkQXJyYXlCdWZmZXJdIiBidXQgZ290IG9iamVjdCAiW29iamVjdCBB
cnJheUJ1ZmZlcl0iCitQQVNTIFN0cmF5IGFyZ3VtZW50CitQQVNTIFNoYXJlZCBtZW1vcnkKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1v
cnkvY29uc3RydWN0b3IuYW55Lndvcmtlci1leHBlY3RlZC50eHQKaW5kZXggOWEyNDkwNTdmNDk4
MjY0OTQ2ZmJiZTYzMThhZjczMmJhZDVhN2RlZS4uNGJiNDk0MmExYWVjYmRlNmRkMjc3YWQwYjRm
YmE4MjhlMWY5ZDA0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5hbnkud29ya2VyLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFueS53b3JrZXItZXhwZWN0ZWQudHh0
CkBAIC0xOCwxMiArMTgsMTIgQEAgUEFTUyBPdXQtb2YtcmFuZ2UgbWF4aW11bSB2YWx1ZSBpbiBk
ZXNjcmlwdG9yOiA0Mjk0OTY3Mjk2CiBQQVNTIE91dC1vZi1yYW5nZSBpbml0aWFsIHZhbHVlIGlu
IGRlc2NyaXB0b3I6IDY4NzE5NDc2NzM2CiBQQVNTIE91dC1vZi1yYW5nZSBtYXhpbXVtIHZhbHVl
IGluIGRlc2NyaXB0b3I6IDY4NzE5NDc2NzM2CiBQQVNTIEluaXRpYWwgdmFsdWUgZXhjZWVkcyBt
YXhpbXVtCi1GQUlMIFNoYXJlZCBtZW1vcnkgd2l0aG91dCBtYXhpbXVtIGFzc2VydF90aHJvd3Nf
anM6IGZ1bmN0aW9uICIoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgImluaXRpYWwiOiAx
MCwgInNoYXJlZCI6IHRydWUgfSkiIGRpZCBub3QgdGhyb3cKK1BBU1MgU2hhcmVkIG1lbW9yeSB3
aXRob3V0IG1heGltdW0KIFBBU1MgUHJveHkgZGVzY3JpcHRvcgogUEFTUyBPcmRlciBvZiBldmFs
dWF0aW9uIGZvciBkZXNjcmlwdG9yCi1GQUlMIE9yZGVyIG9mIGV2YWx1YXRpb24gZm9yIGRlc2Ny
aXB0b3IgKHdpdGggc2hhcmVkKSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBsZW5ndGhzIGRpZmZlciwg
ZXhwZWN0ZWQgYXJyYXkgWyJpbml0aWFsIiwgImluaXRpYWwgdmFsdWVPZiIsICJtYXhpbXVtIiwg
Im1heGltdW0gdmFsdWVPZiIsICJzaGFyZWQiXSBsZW5ndGggNSwgZ290IFsiaW5pdGlhbCIsICJp
bml0aWFsIHZhbHVlT2YiLCAibWF4aW11bSIsICJtYXhpbXVtIHZhbHVlT2YiXSBsZW5ndGggNAor
UEFTUyBPcmRlciBvZiBldmFsdWF0aW9uIGZvciBkZXNjcmlwdG9yICh3aXRoIHNoYXJlZCkKIFBB
U1MgWmVybyBpbml0aWFsCiBQQVNTIE5vbi16ZXJvIGluaXRpYWwKLUZBSUwgU3RyYXkgYXJndW1l
bnQgV2ViQXNzZW1ibHkuTWVtb3J5IGV4cGVjdHMgZXhhY3RseSBvbmUgYXJndW1lbnQKLUZBSUwg
U2hhcmVkIG1lbW9yeSBhc3NlcnRfZXF1YWxzOiBwcm90b3R5cGUgb2YgYnVmZmVyIGV4cGVjdGVk
IG9iamVjdCAiW29iamVjdCBTaGFyZWRBcnJheUJ1ZmZlcl0iIGJ1dCBnb3Qgb2JqZWN0ICJbb2Jq
ZWN0IEFycmF5QnVmZmVyXSIKK1BBU1MgU3RyYXkgYXJndW1lbnQKK1BBU1MgU2hhcmVkIG1lbW9y
eQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dhc20vanNhcGkvbWVtb3J5L2dyb3cuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvZ3Jvdy5h
bnktZXhwZWN0ZWQudHh0CmluZGV4IDQwMDlmNmFlYjJmOGU3MGMxOGIwMDNmMDZmOGMwNzVhZjI0
NDQ3NjMuLmE1ZGU2MGRkNjI4MDY2MzI1MDdjZmZhYTU2NWEyZGFkODliN2NmMGUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2Fw
aS9tZW1vcnkvZ3Jvdy5hbnktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnktZXhwZWN0
ZWQudHh0CkBAIC0xNyw1ICsxNyw1IEBAIFBBU1MgT3V0LW9mLXJhbmdlIGFyZ3VtZW50OiA2ODcx
OTQ3NjczNgogUEFTUyBPdXQtb2YtcmFuZ2UgYXJndW1lbnQ6ICIweDEwMDAwMDAwMCIKIFBBU1Mg
T3V0LW9mLXJhbmdlIGFyZ3VtZW50OiBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIKIFBBU1MgU3Ry
YXkgYXJndW1lbnQKLUZBSUwgR3Jvd2luZyBzaGFyZWQgbWVtb3J5IGRvZXMgbm90IGRldGFjaCBv
bGQgYnVmZmVyIGFzc2VydF9lcXVhbHM6IEJ1ZmZlciBiZWZvcmUgZ3Jvd2luZzogY29uc3RydWN0
b3IgZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCitQQVNTIEdyb3dpbmcgc2hhcmVkIG1lbW9y
eSBkb2VzIG5vdCBkZXRhY2ggb2xkIGJ1ZmZlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2dyb3cuYW55
Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2dyb3cuYW55Lndvcmtlci1leHBlY3RlZC50eHQK
aW5kZXggNDAwOWY2YWViMmY4ZTcwYzE4YjAwM2YwNmY4YzA3NWFmMjQ0NDc2My4uYTVkZTYwZGQ2
MjgwNjYzMjUwN2NmZmFhNTY1YTJkYWQ4OWI3Y2YwZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9ncm93LmFu
eS53b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnkud29ya2VyLWV4cGVjdGVk
LnR4dApAQCAtMTcsNSArMTcsNSBAQCBQQVNTIE91dC1vZi1yYW5nZSBhcmd1bWVudDogNjg3MTk0
NzY3MzYKIFBBU1MgT3V0LW9mLXJhbmdlIGFyZ3VtZW50OiAiMHgxMDAwMDAwMDAiCiBQQVNTIE91
dC1vZi1yYW5nZSBhcmd1bWVudDogb2JqZWN0ICJbb2JqZWN0IE9iamVjdF0iCiBQQVNTIFN0cmF5
IGFyZ3VtZW50Ci1GQUlMIEdyb3dpbmcgc2hhcmVkIG1lbW9yeSBkb2VzIG5vdCBkZXRhY2ggb2xk
IGJ1ZmZlciBhc3NlcnRfZXF1YWxzOiBCdWZmZXIgYmVmb3JlIGdyb3dpbmc6IGNvbnN0cnVjdG9y
IGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQorUEFTUyBHcm93aW5nIHNoYXJlZCBtZW1vcnkg
ZG9lcyBub3QgZGV0YWNoIG9sZCBidWZmZXIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1h
dWRpb2J1ZmZlci1pbnRlcmZhY2UvYXVkaW9idWZmZXItY29weS1jaGFubmVsLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8v
dGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9idWZmZXItaW50ZXJmYWNlL2F1ZGlvYnVmZmVyLWNvcHkt
Y2hhbm5lbC1leHBlY3RlZC50eHQKaW5kZXggMDhkNTBmOGI1MWZlNzQwYTc2MDAxMjg2ZTQ5OWRi
ZGIwNWViZWI0Yi4uMzc5MzRmZWNmMzY5NDE0YWZlZmZhNzY1ZjQ1OWRhYzhlMDRmMTljOCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJh
dWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb2J1ZmZlci1pbnRlcmZhY2UvYXVkaW9idWZmZXIt
Y29weS1jaGFubmVsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvYnVmZmVy
LWludGVyZmFjZS9hdWRpb2J1ZmZlci1jb3B5LWNoYW5uZWwtZXhwZWN0ZWQudHh0CkBAIC0xOSw5
ICsxOSw5IEBAIFBBU1MgICA0OiBidWZmZXIuY29weUZyb21DaGFubmVsKHgsIDMpIHRocmV3IElu
ZGV4U2l6ZUVycm9yOiAiTm90IGEgdmFsaWQgY2hhbm5lCiBQQVNTICAgNTogYnVmZmVyLmNvcHlG
cm9tQ2hhbm5lbCh4LCAwLCAtMSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24uCiBQQVNTICAg
NjogYnVmZmVyLmNvcHlGcm9tQ2hhbm5lbCh4LCAwLCAxNikgZGlkIG5vdCB0aHJvdyBhbiBleGNl
cHRpb24uCiBQQVNTICAgNzogYnVmZmVyLmNvcHlGcm9tQ2hhbm5lbCh4LCAzKSB0aHJldyBJbmRl
eFNpemVFcnJvcjogIk5vdCBhIHZhbGlkIGNoYW5uZWxOdW1iZXIuIi4KLUZBSUwgWCA4OiBidWZm
ZXIuY29weUZyb21DaGFubmVsKFNoYXJlZEFycmF5QnVmZmVyIHZpZXcsIDApIGRpZCBub3QgdGhy
b3cgYW4gZXhjZXB0aW9uLiBhc3NlcnRfdHJ1ZTogZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZB
SUwgWCA5OiBidWZmZXIuY29weUZyb21DaGFubmVsKFNoYXJlZEFycmF5QnVmZmVyIHZpZXcsIDAs
IDApIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uLiBhc3NlcnRfdHJ1ZTogZXhwZWN0ZWQgdHJ1
ZSBnb3QgZmFsc2UKLUZBSUwgPCBbY29weUZyb20tZXhjZXB0aW9uc10gMiBvdXQgb2YgMTEgYXNz
ZXJ0aW9ucyB3ZXJlIGZhaWxlZC4gYXNzZXJ0X3RydWU6IGV4cGVjdGVkIHRydWUgZ290IGZhbHNl
CitQQVNTICAgODogYnVmZmVyLmNvcHlGcm9tQ2hhbm5lbChTaGFyZWRBcnJheUJ1ZmZlciB2aWV3
LCAwKSB0aHJldyBUeXBlRXJyb3I6ICJBcmd1bWVudCAxICgnZGVzdGluYXRpb24nKSB0byBBdWRp
b0J1ZmZlci5jb3B5RnJvbUNoYW5uZWwgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBGbG9hdDMyQXJy
YXkiLgorUEFTUyAgIDk6IGJ1ZmZlci5jb3B5RnJvbUNoYW5uZWwoU2hhcmVkQXJyYXlCdWZmZXIg
dmlldywgMCwgMCkgdGhyZXcgVHlwZUVycm9yOiAiQXJndW1lbnQgMSAoJ2Rlc3RpbmF0aW9uJykg
dG8gQXVkaW9CdWZmZXIuY29weUZyb21DaGFubmVsIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgRmxv
YXQzMkFycmF5Ii4KK1BBU1MgPCBbY29weUZyb20tZXhjZXB0aW9uc10gQWxsIGFzc2VydGlvbnMg
cGFzc2VkLiAodG90YWwgMTEgYXNzZXJ0aW9ucykKIFBBU1MgPiBbY29weVRvLWV4Y2VwdGlvbnNd
CiBQQVNTICAgQXVkaW9CdWZmZXIucHJvdG90eXBlLmNvcHlUb0NoYW5uZWwgZG9lcyBleGlzdC4K
IFBBU1MgICAwOiBidWZmZXIuY29weVRvQ2hhbm5lbChudWxsLCAwKSB0aHJldyBUeXBlRXJyb3I6
ICJBcmd1bWVudCAxICgnc291cmNlJykgdG8gQXVkaW9CdWZmZXIuY29weVRvQ2hhbm5lbCBtdXN0
IGJlIGFuIGluc3RhbmNlIG9mIEZsb2F0MzJBcnJheSIuCkBAIC0zMSw5ICszMSw5IEBAIFBBU1Mg
ICAzOiBidWZmZXIuY29weVRvQ2hhbm5lbCh4LCAzKSB0aHJldyBJbmRleFNpemVFcnJvcjogIk5v
dCBhIHZhbGlkIGNoYW5uZWxOCiBQQVNTICAgNDogYnVmZmVyLmNvcHlUb0NoYW5uZWwoeCwgMCwg
LTEpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uLgogUEFTUyAgIDU6IGJ1ZmZlci5jb3B5VG9D
aGFubmVsKHgsIDAsIDE2KSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4KIFBBU1MgICA2OiBi
dWZmZXIuY29weVRvQ2hhbm5lbCh4LCAzKSB0aHJldyBJbmRleFNpemVFcnJvcjogIk5vdCBhIHZh
bGlkIGNoYW5uZWxOdW1iZXIuIi4KLUZBSUwgWCA3OiBidWZmZXIuY29weVRvQ2hhbm5lbChTaGFy
ZWRBcnJheUJ1ZmZlciB2aWV3LCAwKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4gYXNzZXJ0
X3RydWU6IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFggODogYnVmZmVyLmNvcHlUb0No
YW5uZWwoU2hhcmVkQXJyYXlCdWZmZXIgdmlldywgMCwgMCkgZGlkIG5vdCB0aHJvdyBhbiBleGNl
cHRpb24uIGFzc2VydF90cnVlOiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCA8IFtjb3B5
VG8tZXhjZXB0aW9uc10gMiBvdXQgb2YgMTAgYXNzZXJ0aW9ucyB3ZXJlIGZhaWxlZC4gYXNzZXJ0
X3RydWU6IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitQQVNTICAgNzogYnVmZmVyLmNvcHlUb0No
YW5uZWwoU2hhcmVkQXJyYXlCdWZmZXIgdmlldywgMCkgdGhyZXcgVHlwZUVycm9yOiAiQXJndW1l
bnQgMSAoJ3NvdXJjZScpIHRvIEF1ZGlvQnVmZmVyLmNvcHlUb0NoYW5uZWwgbXVzdCBiZSBhbiBp
bnN0YW5jZSBvZiBGbG9hdDMyQXJyYXkiLgorUEFTUyAgIDg6IGJ1ZmZlci5jb3B5VG9DaGFubmVs
KFNoYXJlZEFycmF5QnVmZmVyIHZpZXcsIDAsIDApIHRocmV3IFR5cGVFcnJvcjogIkFyZ3VtZW50
IDEgKCdzb3VyY2UnKSB0byBBdWRpb0J1ZmZlci5jb3B5VG9DaGFubmVsIG11c3QgYmUgYW4gaW5z
dGFuY2Ugb2YgRmxvYXQzMkFycmF5Ii4KK1BBU1MgPCBbY29weVRvLWV4Y2VwdGlvbnNdIEFsbCBh
c3NlcnRpb25zIHBhc3NlZC4gKHRvdGFsIDEwIGFzc2VydGlvbnMpCiBQQVNTID4gW2NvcHlGcm9t
LXZhbGlkYXRlXQogUEFTUyAgIGJ1ZmZlci5jb3B5RnJvbUNoYW5uZWwoZHN0OCwgMCkgaXMgaWRl
bnRpY2FsIHRvIHRoZSBhcnJheSBbMSwyLDMsNCw1LDYsNyw4XS4KIFBBU1MgICBidWZmZXIuY29w
eUZyb21DaGFubmVsKGRzdDgsIDEpIGlzIGlkZW50aWNhbCB0byB0aGUgYXJyYXkgWzIsMyw0LDUs
Niw3LDgsOV0uCkBAIC02MCw1ICs2MCw1IEBAIFBBU1MgICBidWZmZXIuY29weVRvQ2hhbm5lbChz
cmMxMCwgMCwgNSkgaXMgaWRlbnRpY2FsIHRvIHRoZSBhcnJheSBbLTEsLTEsLTEsLTEsCiBQQVNT
ICAgYnVmZmVyLmNvcHlUb0NoYW5uZWwoc3JjMTAsIDEsIDUpIGlzIGlkZW50aWNhbCB0byB0aGUg
YXJyYXkgWy0xLC0xLC0xLC0xLC0xLDEsMiwzLDQsNSw2LDcsOCw5LDEwLC0xLi4uXS4KIFBBU1Mg
ICBidWZmZXIuY29weVRvQ2hhbm5lbChzcmMxMCwgMiwgNSkgaXMgaWRlbnRpY2FsIHRvIHRoZSBh
cnJheSBbLTEsLTEsLTEsLTEsLTEsMSwyLDMsNCw1LDYsNyw4LDksMTAsLTEuLi5dLgogUEFTUyA8
IFtjb3B5VG8tdmFsaWRhdGVdIEFsbCBhc3NlcnRpb25zIHBhc3NlZC4gKHRvdGFsIDEwIGFzc2Vy
dGlvbnMpCi1GQUlMICMgQVVESVQgVEFTSyBSVU5ORVIgRklOSVNIRUQ6IDIgb3V0IG9mIDUgdGFz
a3Mgd2VyZSBmYWlsZWQuIGFzc2VydF90cnVlOiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorUEFT
UyAjIEFVRElUIFRBU0sgUlVOTkVSIEZJTklTSEVEOiA1IHRhc2tzIHJhbiBzdWNjZXNzZnVsbHku
CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggYmQ2ZTAwMGMzNjdmOWY2NGFlMWViYTQyZjEzZmJjYzZlZjhmNjFjNC4uYjIwMWI4NmQ1N2Q3
N2JhNDI4YzUzMWRkODZkMjliMjNjOWUyNmYwMiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0xMS0xNCAg
WXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxl
bWVudCBXZWJBc3NlbWJseS5NZW1vcnkgd2l0aCBzaGFyZWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODY5MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLWxv
YWQtc2hhcmVkLmpzOiBBZGRlZC4KKyAgICAgICAgKHdhc21GcmFtZUNvdW50RnJvbUVycm9yKToK
KyAgICAgICAgKiB3YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtc3RvcmUtc2hhcmVkLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiB3YXNtL2pzLWFwaS90ZXN0X21lbW9yeS5qczoKKyAgICAgICAgKGJpbmFy
eVNob3VsZE5vdFBhcnNlKToKKyAgICAgICAgKiB3YXNtL3N0cmVzcy9zaGFyZWQtbWVtb3J5LWVy
cm9ycy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQudGhyb3dzKToKKyAgICAgICAgKiB3YXNt
L3N0cmVzcy9zaGFyZWQtd2FzbS1tZW1vcnktYnVmZmVyLmpzOiBBZGRlZC4KKwogMjAyMC0xMS0x
MyAgWGFuIEzDs3BleiAgPHhhbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIFVzZSBzeW1i
b2xzIGFzIGlkZW50aWZpZXJzIGZvciBjbGFzcyBmaWVsZHMgY29tcHV0ZWQgbmFtZXMgc3RvcmFn
ZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtbG9hZC1zaGFy
ZWQuanMgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLXNoYXJlZC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40OTg5MGE3YWFkNTdlNjQ4MjRkMTE0YmIyYTMxMTgwNjMyNDQwMTZiCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtbG9hZC1zaGFy
ZWQuanMKQEAgLTAsMCArMSwzNCBAQAoraW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5q
cycKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnCisKK2NvbnN0IHBhZ2VT
aXplID0gNjQgKiAxMDI0OworY29uc3QgbnVtUGFnZXMgPSAxMDsKKworY29uc3QgYnVpbGRlciA9
IChuZXcgQnVpbGRlcigpKQorICAgIC5UeXBlKCkuRW5kKCkKKyAgICAuSW1wb3J0KCkKKyAgICAg
ICAgLk1lbW9yeSgiYSIsICJiIiwge2luaXRpYWw6IG51bVBhZ2VzfSkKKyAgICAuRW5kKCkKKyAg
ICAuRnVuY3Rpb24oKS5FbmQoKQorICAgIC5FeHBvcnQoKS5GdW5jdGlvbigiZm9vIikuRW5kKCkK
KyAgICAuQ29kZSgpCisgICAgICAgIC5GdW5jdGlvbigiZm9vIiwge3BhcmFtczogWyJpMzIiXSwg
cmV0OiAiaTMyIn0pCisgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgIC5JMzJM
b2FkKDIsIDApCisgICAgICAgICAgICAuUmV0dXJuKCkKKyAgICAgICAgLkVuZCgpCisgICAgLkVu
ZCgpOworCitjb25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCk7Citjb25zdCBt
b2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7Citjb25zdCBmb28gPSBuZXcgV2Vi
QXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7YToge2I6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnko
e2luaXRpYWw6IG51bVBhZ2VzLCBtYXhpbXVtOiBudW1QYWdlcyAqIDIsIHNoYXJlZDogdHJ1ZX0p
fX0pLmV4cG9ydHMuZm9vOworCitmdW5jdGlvbiB3YXNtRnJhbWVDb3VudEZyb21FcnJvcihlKSB7
CisgICAgbGV0IHN0YWNrRnJhbWVzID0gZS5zdGFjay5zcGxpdCgiXG4iKS5maWx0ZXIoKHMpID0+
IHMuaW5kZXhPZigid2FzbS0iKSAhPT0gLTEpOworICAgIHJldHVybiBzdGFja0ZyYW1lcy5sZW5n
dGg7Cit9CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgY29uc3QgZSA9
IGFzc2VydC50aHJvd3MoKCkgPT4gZm9vKG51bVBhZ2VzICogcGFnZVNpemUgKyAxKSwgV2ViQXNz
ZW1ibHkuUnVudGltZUVycm9yLCAiT3V0IG9mIGJvdW5kcyBtZW1vcnkgYWNjZXNzIik7CisgICAg
YXNzZXJ0LmVxKHdhc21GcmFtZUNvdW50RnJvbUVycm9yKGUpLCAyKTsKK30KZGlmZiAtLWdpdCBh
L0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLXN0b3JlLXNoYXJlZC5qcyBiL0pTVGVz
dHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLXN0b3JlLXNoYXJlZC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
OGNhOWE4OTYzODM5MWJmMDRlZWRjYmI2YjdkM2ZjNTQxZTgxNGRhCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtc3RvcmUtc2hhcmVkLmpzCkBAIC0w
LDAgKzEsMjkgQEAKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnCitpbXBvcnQg
KiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJworCitjb25zdCBwYWdlU2l6ZSA9IDY0ICog
MTAyNDsKK2NvbnN0IG51bVBhZ2VzID0gMTA7CisKK3sKKyAgICBjb25zdCBidWlsZGVyID0gKG5l
dyBCdWlsZGVyKCkpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkltcG9ydCgpCisg
ICAgICAgICAgICAuTWVtb3J5KCJhIiwgImIiLCB7aW5pdGlhbDogbnVtUGFnZXN9KQorICAgICAg
ICAuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLkV4cG9ydCgpLkZ1
bmN0aW9uKCJmb28iKS5FbmQoKQorICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rp
b24oImZvbyIsIHtwYXJhbXM6IFsiaTMyIiwgImkzMiJdfSkKKyAgICAgICAgICAgICAgICAuR2V0
TG9jYWwoMSkKKyAgICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgICAu
STMyU3RvcmUoMiwgMCkKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAuRW5kKCk7CisKKyAg
ICBjb25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCk7CisgICAgY29uc3QgbW9k
dWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4pOworICAgIGNvbnN0IGZvbyA9IG5ldyBX
ZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHthOiB7YjogbmV3IFdlYkFzc2VtYmx5Lk1lbW9y
eSh7aW5pdGlhbDogbnVtUGFnZXMsIG1heGltdW06IG51bVBhZ2VzICogMiwgc2hhcmVkOiB0cnVl
fSl9fSkuZXhwb3J0cy5mb287CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKysp
CisgICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gZm9vKGksIG51bVBhZ2VzICogcGFnZVNpemUg
KyAxKSwgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yLCAiT3V0IG9mIGJvdW5kcyBtZW1vcnkgYWNj
ZXNzIik7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfbWVtb3J5Lmpz
IGIvSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0X21lbW9yeS5qcwppbmRleCA1MjA1OTkyNzBjNTBi
ZGM4ZWMyYTVlMWE1MTk1ZTFjY2NiMDljOTQ4Li43MGViZGUyODYyMzJlMTgxZjVlZGNjNTI5YWQy
MGU0ZjZhMTUwOTM1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfbWVtb3J5
LmpzCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9tZW1vcnkuanMKQEAgLTEyNCw3ICsx
MjQsNyBAQCBmdW5jdGlvbiBiaW5hcnlTaG91bGROb3RQYXJzZShidWlsZGVyKSB7CiAKIHsKICAg
ICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoMjApLCBUeXBlRXJy
b3IsICJXZWJBc3NlbWJseS5NZW1vcnkgZXhwZWN0cyBpdHMgZmlyc3QgYXJndW1lbnQgdG8gYmUg
YW4gb2JqZWN0Iik7IAotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1l
bW9yeSh7fSwge30pLCBUeXBlRXJyb3IsICAiV2ViQXNzZW1ibHkuTWVtb3J5IGV4cGVjdHMgZXhh
Y3RseSBvbmUgYXJndW1lbnQiKTsKKyAgICBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFs
OjF9LCB7fSk7CiB9CiAKIGZ1bmN0aW9uIHRlc3QoZikgewpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93
YXNtL3N0cmVzcy9zaGFyZWQtbWVtb3J5LWVycm9ycy5qcyBiL0pTVGVzdHMvd2FzbS9zdHJlc3Mv
c2hhcmVkLW1lbW9yeS1lcnJvcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY0YmZmYjczZWE5MDhhODc5YjA0
ODdiY2I3Nzc5ZjlmNzE3MzQwZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9zdHJl
c3Mvc2hhcmVkLW1lbW9yeS1lcnJvcnMuanMKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0ICogYXMg
YXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CisKK2Fzc2VydC50aHJvd3MoKCkgPT4geworICAg
IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAxLCBzaGFyZWQ6IHRydWUgfSk7Cit9
LCBUeXBlRXJyb3IsIGAnbWF4aW11bScgcGFnZSBjb3VudCBtdXN0IGJlIGRlZmluZWQgaWYgJ3No
YXJlZCcgaXMgdHJ1ZWApOworCithc3NlcnQudGhyb3dzKCgpID0+IHsKKyAgICBsZXQgbWVtb3J5
ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDEsIG1heGltdW06IDIsIHNoYXJl
ZDogdHJ1ZSB9KTsKKyAgICBtZW1vcnkuZ3JvdygzKTsKK30sIFJhbmdlRXJyb3IsIGBXZWJBc3Nl
bWJseS5NZW1vcnkuZ3JvdyB3b3VsZCBleGNlZWQgdGhlIG1lbW9yeSdzIGRlY2xhcmVkIG1heGlt
dW0gc2l6ZWApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3N0cmVzcy9zaGFyZWQtd2FzbS1t
ZW1vcnktYnVmZmVyLmpzIGIvSlNUZXN0cy93YXNtL3N0cmVzcy9zaGFyZWQtd2FzbS1tZW1vcnkt
YnVmZmVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4OTYxM2M5MDkyNTU3MDQ1NmU5NTA4NDUxZTVlMWMwM2Rl
MTZlYzIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vc3RyZXNzL3NoYXJlZC13YXNt
LW1lbW9yeS1idWZmZXIuanMKQEAgLTAsMCArMSwyNCBAQAoraW1wb3J0ICogYXMgYXNzZXJ0IGZy
b20gJy4uL2Fzc2VydC5qcycKKworbGV0IHBhZ2VTaXplID0gNjQgPDwgMTA7CitsZXQgbWVtb3J5
ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7CisgICAgaW5pdGlhbDogMSwKKyAgICBtYXhpbXVt
OiA1LAorICAgIHNoYXJlZDogdHJ1ZSwKK30pOworbGV0IGJ1ZmZlcjEgPSBtZW1vcnkuYnVmZmVy
OworYXNzZXJ0LmVxKGJ1ZmZlcjEuYnl0ZUxlbmd0aCwgcGFnZVNpemUgKiAxKTsKK2Fzc2VydC5l
cShidWZmZXIxLCBtZW1vcnkuYnVmZmVyKTsKKworbWVtb3J5Lmdyb3coMSk7CitsZXQgYnVmZmVy
MiA9IG1lbW9yeS5idWZmZXI7Cithc3NlcnQuZXEoYnVmZmVyMS5ieXRlTGVuZ3RoLCBwYWdlU2l6
ZSAqIDEpOworYXNzZXJ0LmVxKGJ1ZmZlcjIuYnl0ZUxlbmd0aCwgcGFnZVNpemUgKiAyKTsKK2Fz
c2VydC5mYWxzeShidWZmZXIxID09PSBidWZmZXIyKTsKKworbGV0IGJ5dGVzMSA9IG5ldyBVaW50
OEFycmF5KGJ1ZmZlcjEpOworbGV0IGJ5dGVzMiA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcjIpOwor
Ynl0ZXMxWzBdID0gNDI7Cithc3NlcnQuZXEoYnl0ZXMyWzBdLCA0Mik7CitieXRlczJbMF0gPSA0
MzsKK2Fzc2VydC5lcShieXRlczFbMF0sIDQzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414283</attachid>
            <date>2020-11-16 15:12:19 -0800</date>
            <delta_ts>2020-11-17 17:16:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218693-20201116151219.patch</filename>
            <type>text/plain</type>
            <size>187226</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OThkOTIzZmUxNTYzZmE2MzViOWM4ZjdlMmU3ZGVkMTUwODU0NDI1Li5hNDEwMWNjMmM0N2ZmMmJj
MzUzOThiYzZiMzE2NzA4NThmODE5ZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjYgQEAKKzIwMjAtMTEtMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgV2ViQXNzZW1ibHkuTWVtb3J5IHdpdGggc2hh
cmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg2
OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGltcGxlbWVudHMgc2hhcmVkIFdlYkFzc2VtYmx5Lk1lbW9yeS4gVGhpcyBjYW4gYmUg
c2hhcmVkIGJldHdlZW4gd29ya2VycyBsaWtlIFNoYXJlZEFycmF5QnVmZmVyLgorICAgICAgICBU
aGUgbW9zdCBpbnRlcmVzdGluZyB0aGluZyBvZiBzaGFyZWQgV2ViQXNzZW1ibHkuTWVtb3J5IGlz
IHRoYXQgaXQgaXMgZ3Jvd2FibGUuIFRoZSBtZW1vcnkgY2FuIGJlIGdyb3duIGluCisgICAgICAg
IG9uZSB0aHJlYWQsIGFuZCBpbW1lZGlhdGVseSwgaXQgc2hvdWxkIGJlIGFjY2Vzc2libGUgaW4g
dGhlIG90aGVyIHRocmVhZHMuCisKKyAgICAgICAgVG8gYWNoaWV2ZSB0aGF0LCBzaGFyZWQgV2Vi
QXNzZW1ibHkuTWVtb3J5IGxldmVyYWdlcyBzaWduYWxpbmcgZXZlbiBpZiBib3VuZHMtY2hlY2tp
bmcgaXMgbWFpbmx5IHVzZWQuCisgICAgICAgIElmIHRoZSBmYXN0IG1lbW9yeSBpcyBlbmFibGVk
LCB3ZSBqdXN0IHVzZSBpdCBzbyB0aGF0IG1wcm90ZWN0IGNhbiBtYWtlIG1lbW9yeSBncm93biBl
YXNpbHkuIEJ1dCBpZiBmYXN0IG1lbW9yeQorICAgICAgICBpcyBkaXNhYmxlZCwgd2UgYWxsb2Nh
dGVzIHJlcXVlc3RlZCBWQSByZWdpb24gYW5kIHBlcmZvcm0gYm91bmRzLWNoZWNraW5nIHdpdGgg
dGhpcyBWQS4gU2luY2UgV2ViQXNzZW1ibHkuTWVtb3J5CisgICAgICAgIGFsd2F5cyByZXF1aXJl
cyAibWF4aW11bSIgc2l6ZSBvZiBtZW1vcnksIHdlIGNhbiBmaXJzdCBhbGxvY2F0ZSBWQSBhbmQg
bWFwIGFjdGl2ZSBwYXJ0IG9mIG1lbW9yeSBmaXJzdC4gQW5kCisgICAgICAgIHdoZW4gZ3Jvd2lu
Zywgd2UgcGVyZm9ybSBtcHJvdGVjdCB0byB0aGUgcmVzdCBvZiB0aGUgbWVtb3J5LiBTaW5jZSB0
aGlzIFZBIGlzIG5vdCA0R0IsIHdlIHN0aWxsIG5lZWQgdG8gcGVyZm9ybQorICAgICAgICBib3Vu
ZHMtY2hlY2tpbmcsIGJ1dCB3ZSBwZXJmb3JtIGJvdW5kcy1jaGVja2luZyB3aXRoIFZBIHNpemUg
aW5zdGVhZCBvZiBhY3RpdmUgbWVtb3J5IHNpemUuIEFzIGEgcmVzdWx0LCBldmVuIGlmCisgICAg
ICAgIHNoYXJlZCBXZWJBc3NlbWJseS5NZW1vcnkgaXMgZ3Jvd24sIHdlIGRvIG5vdCBuZWVkIHRv
IHVwZGF0ZSAoMSkgcG9pbnRlciBhbmQgKDIpIGJvdW5kcy1jaGVja2luZyBzaXplLgorICAgICAg
ICBUaGUgc2hhcmVkIGJvdW5kcy1jaGVja2luZyBXZWJBc3NlbWJseS5NZW1vcnkgaXMgc29tZXRo
aW5nIGxpa2UgYmVsb3cuCisKKyAgICAgICAgPD09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PSBtYXhpbXVtID09PT09PT09PT09PT09PT09PT09PT09PT09PT0+
PC0tLS0tLS0tLS0tLSBvdGhlciBtZW1vcnksIHByb3RlY3RlZCBieSBib3VuZHMtY2hlY2tpbmcg
LS0uLi4KKyAgICAgICAgPD09PT09PT0gYWN0aXZlID09PT09PT09PT0+PD09PT09PT09PT09PT09
PT09PT09PSBub3QgYWN0aXZlIHlldCA9PT09PT09PT09PT09PT09PT09PT0+CisgICAgICAgIF4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBpZiB3ZSBhY2Nlc3MgdGhpcywgZmF1bHQg
aGFuZGxlciB3aWxsIGRldGVjdCBpdF0gICAgXgorICAgICAgICBwb2ludGVyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvdW5kIGNoZWNraW5nIHNpemUKKworICAgICAgICBUaGVzZSAiZ3Jvd2FibGUg
Ym91bmQtY2hlY2tpbmcgbWVtb3J5IiBpcyBub3cgbWFuYWdlZCBieSB3YXNtIG1lbW9yeS1tYW5h
Z2VyLiBBbmQgZmF1bHQgaGFuZGxlciBpcyBldmVuIGlmIGZhc3QgbWVtb3J5IGlzIGRpc2FibGVk
LgorICAgICAgICBBbmQgZmF1bHQgaGFuZGxlciBhbHNvIGFjY2VwdHMgc2lnbmFscyBmcm9tIFdh
c20gTExJbnQgY29kZSBzaW5jZSBib3RoIGJvdW5kcy1jaGVja2luZ3MgKyBzaWduYWxpbmdzIGFy
ZSByZXF1aXJlZCB0byBjb25maW5lIG1lbW9yeSBhY2Nlc3MgZXZlbiBpbgorICAgICAgICBXYXNt
IExMSW50LiBUaGlzIHBhdGNoIGFsc28gcmVuYW1lZCBtZW1vcnktc2l6ZSBhbmQgc2l6ZS1yZWdp
c3RlciB0byBib3VuZHMtY2hlY2tpbmctc2l6ZSBhbmQgYm91bmRzLWNoZWNraW5nLXNpemUtcmVn
aXN0ZXIgc2luY2UgdGhpcyBpcyBubyBsb25nZXIKKyAgICAgICAgYSBzaXplIG9mIG1lbW9yeS4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbGxpbnQvTExJbnRQQ1Jhbmdlcy5o
OgorICAgICAgICAoSlNDOjpMTEludDo6aXNXYXNtTExJbnRQQyk6CisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvV2ViQXNzZW1ibHkuYXNt
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5QnVmZmVyOjp0b1dyYXBwZWRBbGxvd1NoYXJlZCk6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5QnVmZmVyVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3Ojp0b1dyYXBwZWRBbGxvd1No
YXJlZCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAg
ICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dG9XcmFwcGVkQWxs
b3dTaGFyZWQpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChKU0M6
Om92ZXJyaWRlRGVmYXVsdHMpOgorICAgICAgICAoSlNDOjpPcHRpb25zOjppbml0aWFsaXplKToK
KyAgICAgICAgKiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OkFpcklSR2VuZXJhdG9yOjpBaXJJUkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206
OkFpcklSR2VuZXJhdG9yOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZSk6CisgICAgICAg
IChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZENhbGwpOgorICAgICAgICAo
SlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KToKKyAgICAgICAgKiB3
YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVy
YXRvcjo6QjNJUkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6
OnJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJ
UkdlbmVyYXRvcjo6YWRkQ3VycmVudE1lbW9yeSk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJH
ZW5lcmF0b3I6OmVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5l
cmF0b3I6OmFkZENhbGxJbmRpcmVjdCk6CisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6
CisgICAgICAgIChKU0M6Oldhc206Ondhc21Ub1dhc20pOgorICAgICAgICAqIHdhc20vV2FzbUZh
dWx0U2lnbmFsSGFuZGxlci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OnRyYXBIYW5kbGVyKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6ZW5hYmxlRmFzdE1lbW9yeSk6CisgICAgICAgIChKU0M6Oldh
c206OnByZXBhcmVGYXN0TWVtb3J5KToKKyAgICAgICAgKiB3YXNtL1dhc21JbnN0YW5jZS5oOgor
ICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6Y2FjaGVkTWVtb3J5IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OmNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSBjb25zdCk6
CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjp1cGRhdGVDYWNoZWRNZW1vcnkpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1Np
emUpOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6Y2FjaGVkTWVtb3J5U2l6ZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hl
ZE1lbW9yeVNpemUpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeS5jcHA6Cisg
ICAgICAgIChKU0M6Oldhc206Ok1lbW9yeUhhbmRsZTo6TWVtb3J5SGFuZGxlKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6TWVtb3J5SGFuZGxlOjp+TWVtb3J5SGFuZGxlKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6TWVtb3J5OjpNZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6TWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUdyb3dhYmxlTWVtb3J5KToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6TWVtb3J5Ojpncm93U2hhcmVkKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
TWVtb3J5Ojpncm93KToKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5OjpkdW1wIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5Ojp+TWVtb3J5KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6V2FzbTo6TWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUZhc3RNZW1vcnkpOiBEZWxldGVk
LgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1v
cnk6OmFkZHJlc3NJc0luQWN0aXZlR3Jvd2FibGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNt
OjpNZW1vcnk6Om9wZXJhdG9yIGJvb2wgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpX
YXNtOjpNZW1vcnk6Om1lbW9yeSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206
Ok1lbW9yeTo6c2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206Ok1lbW9y
eTo6c2l6ZUluUGFnZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1v
cnk6OmluaXRpYWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6
Om1heGltdW0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Om1v
ZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmNoZWNrKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5OjpvZmZzZXRPZk1lbW9yeSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6b2Zmc2V0T2ZTaXplKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUZhc3RNZW1v
cnkpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcDoK
KyAgICAgICAgKEpTQzo6V2FzbTo6UGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQpOgorICAgICAgICAo
SlNDOjpXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyk6CisgICAg
ICAgICogd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6
UGlubmVkUmVnaXN0ZXJJbmZvOjp0b1NhdmUgY29uc3QpOgorICAgICAgICAqIHdhc20vV2FzbU1l
bW9yeU1vZGUuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjptYWtlU3RyaW5nKToKKyAgICAgICAg
KiB3YXNtL1dhc21NZW1vcnlNb2RlLmg6CisgICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6
CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICog
d2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFz
c2VtYmx5SW5zdGFuY2U6OnRyeUNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5TWVtb3J5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6YnVmZmVy
KToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6Z3Jvd1N1Y2Nlc3NDYWxsYmFj
ayk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5Lmg6CisgICAgICAgICog
d2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1i
bHlGdW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3cpOgorICAgICAgICAqIHdhc20vanMvV2Vi
QXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3Rv
dHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6
OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZSk6CisKIDIwMjAtMTEtMTUgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBXYXNtIHNob3Vs
ZCBnZXQgYnl0ZSBsZW5ndGggZnJvbSBzb3VyY2UgdHlwZWQgYXJyYXkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAx
ODExNzVjYzU2ZjY2ZWU3NDQzNjE1OTMwNjZlYWQ3ZDY3NzhjZTE1Li41OGRmZTM5YWFjNmJhMTc0
NTVlZmQwYzgzY2ZlZDAzZTlkNDFmNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAzIEBACisy
MDIwLTExLTE2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAg
W0pTQ10gSW1wbGVtZW50IFdlYkFzc2VtYmx5Lk1lbW9yeSB3aXRoIHNoYXJlZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NjkzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gV2ViQ29yZSwgd2UgbmVl
ZCB0aHJlZSB0aGluZ3MuCisKKyAgICAgICAgMS4gU2hhcmVkIFdlYkFzc2VtYmx5Lk1lbW9yeSBz
ZXJpYWxpemF0aW9uL2Rlc2VyaWFsaXphdGlvbgorCisgICAgICAgICAgICBUaGlzIHBhdGNoIGFk
ZHMgc3RydWN0dXJlLWNsb25pbmcgZm9yIFdlYkFzc2VtYmx5Lk1lbW9yeSB0byBwYXNzIGl0IHRv
IHRoZSBvdGhlciB3b3JrZXJzLiBDbG9uaW5nIGlzIGF2YWlsYWJsZQorICAgICAgICAgICAgb25s
eSB3aGVuIHRoZSBXZWJBc3NlbWJseS5NZW1vcnkgaXMgc2hhcmVkIG1vZGUuIEFuZCBpdCBpcyBv
bmx5IGF2YWlsYWJsZSB3aGVuIHdlIGFyZSB1c2luZyBpdCBpbiBwb3N0TWVzc2FnZS4KKyAgICAg
ICAgICAgIFNvIHdlIGNhbm5vdCBzdG9yZSBXZWJBc3NlbWJseS5NZW1vcnkgaW4gSW5kZXhlZERC
LgorCisgICAgICAgIDIuIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcjo6aXNBdG9taWNzV2Fp
dEFsbG93ZWRPbkN1cnJlbnRUaHJlYWQKKworICAgICAgICAgICAgQXRvbWljcy53YWl0IGlzIHVz
YWJsZSBvbmx5IGluIFdvcmtlcnMsIGFuZCAqbm90KiB1c2FibGUgaW4gU2VydmljZSBXb3JrZXJz
LiBXaGVuIGNyZWF0aW5nIFZNLCB3ZSBwYXNzIFdvcmtlclRocmVhZFR5cGUKKyAgICAgICAgICAg
IGFuZCBtYWtlIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcjo6aXNBdG9taWNzV2FpdEFsbG93
ZWRPbkN1cnJlbnRUaHJlYWQgcmV0dXJuIGFwcHJvcHJpYXRlIHZhbHVlLgorCisgICAgICAgIDMu
IFtBbGxvd1NoYXJlZF0gc3VwcG9ydCBmb3IgV1BUCisKKyAgICAgICAgICAgIFdQVCB0ZXN0cyBm
b3IgdGhpcyBhcmUgYnJva2VuLCBhbmQgdGVzdHMgYXJlIHNheWluZyAiUEFTUyIgd2hpbGUgdGhl
IGZlYXR1cmUgaXMgbm90IGltcGxlbWVudGVkIGF0IGFsbC4KKyAgICAgICAgICAgIE5vdywgdGhl
IGZlYXR1cmUgaXMgYWN0dWFsbHkgaW1wbGVtZW50ZWQsIGFuZCBXUFQgdGVzdHMgc3RhcnQgc2hv
d2luZyB0aGF0IFtBbGxvd1NoYXJlZF0gYW5ub3RhdGlvbiBpbiBJREwKKyAgICAgICAgICAgIGlz
IG5vdCBpbXBsZW1lbnRlZC4gW0FsbG93U2hhcmVkXSBpcyB0aGF0LCB1c3VhbGx5LCBET00gZG9l
cyBub3QgYWNjZXB0IFR5cGVkQXJyYXkgb3JpZ2luYXRlZCBmcm9tIFNoYXJlZEFycmF5QnVmZmVy
LgorICAgICAgICAgICAgZS5nLiBlbmNvZGVJbnRvKC4uLiwgVWludDhBcnJheSkgRE9NIElETCB0
aHJvd3MgYW4gZXJyb3IgaWYgVWludDhBcnJheSBpcyBiYWNrZWQgYnkgU2hhcmVkQXJyYXlCdWZm
ZXIuCisgICAgICAgICAgICBCdXQgaW4gdGhlIGxpbWl0ZWQgcGxhY2VzLCB3ZSBhcmUgZXhwbGlj
aXRseSBhbGxvd2luZyB0aGlzLiBUaGlzIGlzIFtBbGxvd1NoYXJlZF0gYW5ub3RhdGlvbi4KKyAg
ICAgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGF0IHNvIHRoYXQgd2Uga2VlcCBwYXNz
aW5nIFRleHRFbmNvZGVyIC8gVGV4dERlY29kZXIgdGVzdHMuCisKKyAgICAgICAgKiBIZWFkZXJz
LmNtYWtlOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcmlhbGl6
YXRpb25Db250ZXh0Ojppbml0aWFsaXplVk0pOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9JRExUeXBlcy5oOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0NvbW1vblZNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbW1vblZN
U2xvdyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0QnVmZmVyU291cmNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjo6Y29udmVy
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMQXJyYXlCdWZmZXI+Ojpjb252ZXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJRExEYXRhVmlldz46OmNvbnZlcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udmVydGVyPElETEludDhBcnJheT46OmNvbnZlcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udmVydGVyPElETEludDE2QXJyYXk+Ojpjb252ZXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJRExJbnQzMkFycmF5Pjo6Y29udmVydCk6CisgICAgICAg
IChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMVWludDhBcnJheT46OmNvbnZlcnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udmVydGVyPElETFVpbnQxNkFycmF5Pjo6Y29udmVydCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb252ZXJ0ZXI8SURMVWludDMyQXJyYXk+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnZlcnRlcjxJRExVaW50OENsYW1wZWRBcnJheT46OmNvbnZlcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udmVydGVyPElETEZsb2F0MzJBcnJheT46OmNvbnZlcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udmVydGVyPElETEZsb2F0NjRBcnJheT46OmNvbnZlcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udmVydGVyPElETEFycmF5QnVmZmVyVmlldz46OmNvbnZlcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udmVydGVyPElETEFsbG93U2hhcmVkQWRhcHRvcjxUPj46OmNvbnZl
cnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydFVuaW9uLmg6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25l
U2VyaWFsaXplcjo6Q2xvbmVTZXJpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2Vy
aWFsaXplcjo6ZHVtcElmVGVybWluYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlh
bGl6ZXI6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVy
OjpDbG9uZURlc2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXpl
cjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y29tcHV0ZU1lbW9yeUNvc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xp
ZW50RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1h
bFdvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmg6Cisg
ICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcjo6V2ViQ29yZVR5cGVk
QXJyYXlDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVUeXBlZEFycmF5Q29u
dHJvbGxlcjo6aXNBdG9taWNzV2FpdEFsbG93ZWRPbkN1cnJlbnRUaHJlYWQpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1dlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5oOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoSXNBbm5vdGF0ZWRU
eXBlKToKKyAgICAgICAgKEdldEFubm90YXRlZElETFR5cGUpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqRE9NQ29u
c3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbl9lbmNvZGVJbnRvQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2Jq
LmlkbDoKKyAgICAgICAgKiBkb20vVGV4dERlY29kZXIuaWRsOgorICAgICAgICAqIGRvbS9UZXh0
RGVjb2RlclN0cmVhbURlY29kZXIuaWRsOgorICAgICAgICAqIGRvbS9UZXh0RW5jb2Rlci5pZGw6
CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6RGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKToK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6V29ya2VyT3JXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlcik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRD
b250cm9sbGVyLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWRUeXBlLmg6IEFkZGVk
LgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxT
Y29wZSk6CisKIDIwMjAtMTEtMTYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgog
CiAgICAgICAgIElnbm9yZSBkZXByZWNhdGlvbiB3YXJuaW5ncyBmb3IgdGhlIHVuaWZvcm0gdHlw
ZXMgQyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzOGFlNmNlMTFh
ODliYjJjYTY1N2M1OGNmODJkN2U0NzUxOGE5OTUxLi4wNTMzYTgxZmQ5NjEzN2JlOTYwN2M2N2Yy
M2UyMDMxOWNmNDAxNjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0x
MDg4LDYgKzEwODgsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIHdhc20vV2FzbVRpZXJVcENvdW50LmgKIAogICAgIHdhc20vanMvSlNXZWJBc3Nl
bWJseS5oCisgICAgd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmgKICAgICB3YXNtL2pzL0pT
V2ViQXNzZW1ibHlNb2R1bGUuaAogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
YzBlZWYwYmMzMGUwMmNkODc2YzkzMTJkNzFlZDZlMDEyN2QzZTQ1OC4uYmMwM2M3OGNiMTE4MWZm
MjIzOWFlMWIxMWQzZjQ0YzhlYTRmZDgwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTE1NzQsNyArMTU3NCw3IEBACiAJCUFEMDA2NTlFMUVDQUM4MTIwMDBDQTkyNiAvKiBXYXNt
TGltaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
RDAwNjU5RDFFQ0FDN0ZFMDAwQ0E5MjYgLyogV2FzbUxpbWl0cy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFEMkZDQkUzMURCNThEQUQwMEIzRTcz
NiAvKiBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JBNzFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJB
c3NlbWJseUNvbXBpbGVFcnJvci5oICovOyB9OwogCQlBRDJGQ0JFNTFEQjU4REFEMDBCM0U3MzYg
LyogSlNXZWJBc3NlbWJseUluc3RhbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JBOTFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJs
eUluc3RhbmNlLmggKi87IH07Ci0JCUFEMkZDQkU3MURCNThEQUQwMEIzRTczNiAvKiBKU1dlYkFz
c2VtYmx5TWVtb3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBRDJGQ0JBQjFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1lbW9yeS5oICov
OyB9OworCQlBRDJGQ0JFNzFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1lbW9yeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQUIx
REI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNZW1vcnkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBRDJGQ0JFOTFEQjU4REFEMDBCM0U3
MzYgLyogSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQUQxREI1OERBNDAwQjNFNzM2IC8qIEpTV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3IuaCAqLzsgfTsKIAkJQUQyRkNCRUIxREI1OERBRDAwQjNFNzM2
IC8qIEpTV2ViQXNzZW1ibHlUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQUQyRkNCQUYxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlU
YWJsZS5oICovOyB9OwogCQlBRDJGQ0JFRDFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQUQyRkNCQjExREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29t
cGlsZUVycm9yQ29uc3RydWN0b3IuaCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFBDUmFuZ2VzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRQQ1Jhbmdlcy5oCmluZGV4IDQ0ZjRlZjkxMDNkN2UyMTYyOTU5ZGZhNTY4MmVhNmNi
MWI1Mjg3MTMuLjY0YjJkZTg5MjRlODcxZDk0ZmJhY2RhMmZkMTBkODgyN2FiMjBjMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFBDUmFuZ2VzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50UENSYW5nZXMuaApAQCAtMzUsNiArMzUs
MTAgQEAgbmFtZXNwYWNlIExMSW50IHsKIGV4dGVybiAiQyIgewogICAgIHZvaWQgbGxpbnRQQ1Jh
bmdlU3RhcnQoKTsKICAgICB2b2lkIGxsaW50UENSYW5nZUVuZCgpOworI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKKyAgICB2b2lkIHdhc21MTEludFBDUmFuZ2VTdGFydCgpOworICAgIHZvaWQgd2Fz
bUxMSW50UENSYW5nZUVuZCgpOworI2VuZGlmCiB9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBpc0xM
SW50UEModm9pZCogcGMpCkBAIC00Niw2ICs1MCwxNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNM
TEludFBDKHZvaWQqIHBjKQogICAgIHJldHVybiBsbGludFN0YXJ0IDw9IHBjQXNJbnQgJiYgcGNB
c0ludCA8PSBsbGludEVuZDsKIH0KIAorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKK0FMV0FZU19J
TkxJTkUgYm9vbCBpc1dhc21MTEludFBDKHZvaWQqIHBjKQoreworICAgIHVpbnRwdHJfdCBwY0Fz
SW50ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ocGMpOworICAgIHVpbnRwdHJfdCBzdGFydCA9
IHVudGFnQ29kZVB0cjx1aW50cHRyX3QsIENGdW5jdGlvblB0clRhZz4od2FzbUxMSW50UENSYW5n
ZVN0YXJ0KTsKKyAgICB1aW50cHRyX3QgZW5kID0gdW50YWdDb2RlUHRyPHVpbnRwdHJfdCwgQ0Z1
bmN0aW9uUHRyVGFnPih3YXNtTExJbnRQQ1JhbmdlRW5kKTsKKyAgICBSRUxFQVNFX0FTU0VSVChz
dGFydCA8IGVuZCk7CisgICAgcmV0dXJuIHN0YXJ0IDw9IHBjQXNJbnQgJiYgcGNBc0ludCA8PSBl
bmQ7Cit9CisjZW5kaWYKKwogI2lmICFFTkFCTEUoQ19MT09QKQogc3RhdGljIGNvbnN0ZXhwciBH
UFJSZWcgTExJbnRQQyA9IEdQUkluZm86OnJlZ1Q0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggODNlMjRh
MDgyMTBiOTVlYjg3MDAzYmNlZTE2ODNhMDk4YThmNDg2Ny4uYmVkNWNkZjVlMmE5MzQyMjc0MjE4
N2QwMzNiYWRmMGYzNWFlMDRkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMjQ2Nyw3ICsyNDY3LDEyIEBAIG1hY3Jv
IHdhc21TY29wZSgpCiAgICAgIyBidXQgd2UgZG9uJ3Qgd2FudCB0byBpbnRlcmZlcmUgd2l0aCB0
aGUgTExJbnQgb3Bjb2RlcwogICAgIGluY2x1ZGUgV2ViQXNzZW1ibHkKIGVuZAorCitnbG9iYWwg
X3dhc21MTEludFBDUmFuZ2VTdGFydAorX3dhc21MTEludFBDUmFuZ2VTdGFydDoKIHdhc21TY29w
ZSgpCitnbG9iYWwgX3dhc21MTEludFBDUmFuZ2VFbmQKK193YXNtTExJbnRQQ1JhbmdlRW5kOgog
CiBlbHNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3Nl
bWJseS5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCmlu
ZGV4IDhiZmZjOGE2OTdkMmU2ZTRmMjBkZTk2NDA1YTVmM2QyNGY4YTFlYmMuLmRmOGJiZmExZDQ3
NDA0YjcwN2I3ZGNkZmM5YmQzZmY2ZmUzMjkxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L1dlYkFzc2VtYmx5LmFzbQpAQCAtNDUsNyArNDUsNyBAQCBjb25zdCBOdW1iZXJPZldh
c21Bcmd1bWVudHMgPSBOdW1iZXJPZldhc21Bcmd1bWVudEdQUnMgKyBOdW1iZXJPZldhc21Bcmd1
bWVudEZQUgogIyBUaGVzZSBtdXN0IG1hdGNoIHRoZSBkZWZpbml0aW9uIGluIFdhc21NZW1vcnlJ
bmZvcm1hdGlvbi5jcHAKIGNvbnN0IHdhc21JbnN0YW5jZSA9IGNzcjAKIGNvbnN0IG1lbW9yeUJh
c2UgPSBjc3IzCi1jb25zdCBtZW1vcnlTaXplID0gY3NyNAorY29uc3QgYm91bmRzQ2hlY2tpbmdT
aXplID0gY3NyNAogCiAjIFRoaXMgbXVzdCBtYXRjaCB0aGUgZGVmaW5pdGlvbiBpbiBMb3dMZXZl
bEludGVycHJldGVyLmFzbQogaWYgWDg2XzY0CkBAIC0xODcsNyArMTg3LDcgQEAgZW5kCiAjIFdh
c20gc3BlY2lmaWMgaGVscGVycwogCiBtYWNybyBwcmVzZXJ2ZUNhbGxlZVNhdmVzVXNlZEJ5V2Fz
bSgpCi0gICAgIyBOT1RFOiBXZSBpbnRlbnRpb25hbGx5IGRvbid0IHNhdmUgbWVtb3J5QmFzZSBh
bmQgbWVtb3J5U2l6ZSBoZXJlLiBTZWUgdGhlIGNvbW1lbnQKKyAgICAjIE5PVEU6IFdlIGludGVu
dGlvbmFsbHkgZG9uJ3Qgc2F2ZSBtZW1vcnlCYXNlIGFuZCBib3VuZHNDaGVja2luZ1NpemUgaGVy
ZS4gU2VlIHRoZSBjb21tZW50CiAgICAgIyBpbiByZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlXYXNt
KCkgYmVsb3cgZm9yIHdoeS4KICAgICBzdWJwIENhbGxlZVNhdmVTcGFjZVN0YWNrQWxpZ25lZCwg
c3AKICAgICBpZiBBUk02NCBvciBBUk02NEUKQEAgLTIwMSw3ICsyMDEsNyBAQCBtYWNybyBwcmVz
ZXJ2ZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgpCiBlbmQKIAogbWFjcm8gcmVzdG9yZUNhbGxlZVNh
dmVzVXNlZEJ5V2FzbSgpCi0gICAgIyBOT1RFOiBXZSBpbnRlbnRpb25hbGx5IGRvbid0IHJlc3Rv
cmUgbWVtb3J5QmFzZSBhbmQgbWVtb3J5U2l6ZSBoZXJlLiBUaGVzZSBhcmUgc2F2ZWQKKyAgICAj
IE5PVEU6IFdlIGludGVudGlvbmFsbHkgZG9uJ3QgcmVzdG9yZSBtZW1vcnlCYXNlIGFuZCBib3Vu
ZHNDaGVja2luZ1NpemUgaGVyZS4gVGhlc2UgYXJlIHNhdmVkCiAgICAgIyBhbmQgcmVzdG9yZWQg
d2hlbiBlbnRlcmluZyBXYXNtIGJ5IHRoZSBKU1RvV2FzbSB3cmFwcGVyIGFuZCBjaGFuZ2VzIHRv
IHRoZW0gYXJlIG1lYW50CiAgICAgIyB0byBiZSBvYnNlcnZhYmxlIHdpdGhpbiB0aGUgc2FtZSBX
YXNtIG1vZHVsZS4KICAgICBpZiBBUk02NCBvciBBUk02NEUKQEAgLTI0MCw4ICsyNDAsOCBAQCBl
bmQKIAogbWFjcm8gcmVsb2FkTWVtb3J5UmVnaXN0ZXJzRnJvbUluc3RhbmNlKGluc3RhbmNlLCBz
Y3JhdGNoMSwgc2NyYXRjaDIpCiAgICAgbG9hZHAgV2FzbTo6SW5zdGFuY2U6Om1fY2FjaGVkTWVt
b3J5W2luc3RhbmNlXSwgbWVtb3J5QmFzZQotICAgIGxvYWRpIFdhc206Okluc3RhbmNlOjptX2Nh
Y2hlZE1lbW9yeVNpemVbaW5zdGFuY2VdLCBtZW1vcnlTaXplCi0gICAgY2FnZWRQcmltaXRpdmUo
bWVtb3J5QmFzZSwgbWVtb3J5U2l6ZSwgc2NyYXRjaDEsIHNjcmF0Y2gyKQorICAgIGxvYWRpIFdh
c206Okluc3RhbmNlOjptX2NhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZVtpbnN0YW5jZV0sIGJvdW5k
c0NoZWNraW5nU2l6ZQorICAgIGNhZ2VkUHJpbWl0aXZlKG1lbW9yeUJhc2UsIGJvdW5kc0NoZWNr
aW5nU2l6ZSwgc2NyYXRjaDEsIHNjcmF0Y2gyKQogZW5kCiAKIG1hY3JvIHRocm93RXhjZXB0aW9u
KGV4Y2VwdGlvbikKQEAgLTg1Niw3ICs4NTYsOSBAQCB3YXNtT3AoY2FsbF9pbmRpcmVjdF9ub190
bHMsIFdhc21DYWxsSW5kaXJlY3ROb1RscywgbWFjcm8oY3R4KQogZW5kKQogCiB3YXNtT3AoY3Vy
cmVudF9tZW1vcnksIFdhc21DdXJyZW50TWVtb3J5LCBtYWNybyhjdHgpCi0gICAgbG9hZHAgV2Fz
bTo6SW5zdGFuY2U6Om1fY2FjaGVkTWVtb3J5U2l6ZVt3YXNtSW5zdGFuY2VdLCB0MAorICAgIGxv
YWRwIFdhc206Okluc3RhbmNlOjptX21lbW9yeVt3YXNtSW5zdGFuY2VdLCB0MAorICAgIGxvYWRw
IFdhc206Ok1lbW9yeTo6bV9oYW5kbGVbdDBdLCB0MAorICAgIGxvYWRwIFdhc206Ok1lbW9yeUhh
bmRsZTo6bV9zaXplW3QwXSwgdDAKICAgICB1cnNoaWZ0cSAxNiwgdDAKICAgICByZXR1cm5xKGN0
eCwgdDApCiBlbmQpCkBAIC04NzQsNyArODc2LDcgQEAgZW5kKQogIyB1c2VzIG9mZnNldCBhcyBz
Y3JhdGNoIGFuZCByZXR1cm5zIHJlc3VsdCBvbiBwb2ludGVyCiBtYWNybyBlbWl0Q2hlY2tBbmRQ
cmVwYXJlUG9pbnRlcihjdHgsIHBvaW50ZXIsIG9mZnNldCwgc2l6ZSkKICAgICBsZWFwIHNpemUg
LSAxW3BvaW50ZXIsIG9mZnNldF0sIHQ1Ci0gICAgYnBiIHQ1LCBtZW1vcnlTaXplLCAuY29udGlu
dWF0aW9uCisgICAgYnBiIHQ1LCBib3VuZHNDaGVja2luZ1NpemUsIC5jb250aW51YXRpb24KICAg
ICB0aHJvd0V4Y2VwdGlvbihPdXRPZkJvdW5kc01lbW9yeUFjY2VzcykKIC5jb250aW51YXRpb246
CiAgICAgYWRkcCBtZW1vcnlCYXNlLCBwb2ludGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyLmgKaW5kZXggNmJlYTRjZmYxNDkxZjk5NGFiYzNlODA1NmU2
YjQzYzQzMTUyNWRjZi4uYWU0Y2Y2MWE1NTkyOGNhZmU5NTI5ZmIyN2UxZTA5N2QxMjBiOWNhOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaApAQCAt
NTUsNiArNTUsNyBAQCBjbGFzcyBKU0FycmF5QnVmZmVyIGZpbmFsIDogcHVibGljIEpTTm9uRmlu
YWxPYmplY3QgewogICAgIAogICAgIC8vIFRoaXMgaXMgdGhlIGRlZmF1bHQgRE9NIHVud3JhcHBp
bmcuIEl0IGNhbGxzIHRvVW5zaGFyZWRBcnJheUJ1ZmZlcigpLgogICAgIHN0YXRpYyBBcnJheUJ1
ZmZlciogdG9XcmFwcGVkKFZNJiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIEFycmF5QnVmZmVyKiB0
b1dyYXBwZWRBbGxvd1NoYXJlZChWTSYsIEpTVmFsdWUpOwogICAgIAogcHJpdmF0ZToKICAgICBK
U0FycmF5QnVmZmVyKFZNJiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKQEAg
LTg2LDQgKzg3LDkgQEAgaW5saW5lIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyOjp0b1dyYXBw
ZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiB0b1Vuc2hhcmVkQXJyYXlCdWZm
ZXIodm0sIHZhbHVlKTsKIH0KIAoraW5saW5lIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyOjp0
b1dyYXBwZWRBbGxvd1NoYXJlZChWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJu
IHRvUG9zc2libHlTaGFyZWRBcnJheUJ1ZmZlcih2bSwgdmFsdWUpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlldy5oCmluZGV4IDNiMDZlMjhjOGMwMjM2ZDViYWYyZTdlNjQ4ZmZlYzVkMTNmZTYxMmEu
LmQ2ODQ4NzBlNzdmODY1Zjg5MTg4OGU1ZDllMzE3MWYxNDllYmQ0NTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaApAQCAtMjA0LDYg
KzIwNCw3IEBAIGNsYXNzIEpTQXJyYXlCdWZmZXJWaWV3IDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgewogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNb2RlKCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEpTQXJyYXlCdWZmZXJWaWV3LCBtX21vZGUpOyB9CiAgICAgCiAgICAgc3RhdGlj
IFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IHRvV3JhcHBlZChWTSYsIEpTVmFsdWUpOworICAgIHN0
YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiB0b1dyYXBwZWRBbGxvd1NoYXJlZChWTSYsIEpT
VmFsdWUpOwogCiBwcml2YXRlOgogICAgIGVudW0gUmVxdWVzdGVyIHsgTXV0YXRvciwgQ29uY3Vy
cmVudFRocmVhZCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAppbmRleCA0ZmQ3ZWVmNjZiZGMyODIwYjQwZWY1
NGZkZTY4OWE2ZjY1NDYwZDE1Li45ODRmOWEyMGI3YzVmMzA5YWI5OTk5ZTA2ZjRmMDEyMDc4NmRh
MGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyVmlld0lubGluZXMuaApAQCAtMTI5LDQgKzEyOSwxMiBAQCBpbmxpbmUgUmVmUHRy
PEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnRvV3JhcHBlZChWTSYgdm0sIEpT
VmFsdWUgdmFsdQogICAgIHJldHVybiBudWxscHRyOwogfQogCitpbmxpbmUgUmVmUHRyPEFycmF5
QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnRvV3JhcHBlZEFsbG93U2hhcmVkKFZNJiB2
bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBq
c0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4odm0sIHZhbHVlKSkKKyAgICAgICAgcmV0
dXJuIHZpZXctPnBvc3NpYmx5U2hhcmVkSW1wbCgpOworICAgIHJldHVybiBudWxscHRyOworfQor
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggZThjMzFkODA3MDA5Nzc5
NWE0ZDA0YjA0M2UzMjlhNDZiNjM4MjM5Ny4uY2ViNDg1MWFjYTJjN2UxZDIxNDUwNTM0ODZiYTUy
MGI1ODRjNGMyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0yODcsNiArMjg3LDggQEAgY2xhc3MgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcgZmluYWwgOiBwdWJsaWMgSlNBcnJheUJ1ZmZlclZpZXcgewog
CiAgICAgLy8gVGhpcyBpcyB0aGUgZGVmYXVsdCBET00gdW53cmFwcGluZy4gSXQgY2FsbHMgdG9V
bnNoYXJlZE5hdGl2ZVR5cGVkVmlldygpLgogICAgIHN0YXRpYyBSZWZQdHI8dHlwZW5hbWUgQWRh
cHRvcjo6Vmlld1R5cGU+IHRvV3JhcHBlZChWTSYsIEpTVmFsdWUpOworICAgIC8vIFtBbGxvd1No
YXJlZF0gYW5ub3RhdGlvbiBhbGxvd3MgYWNjZXB0aW5nIFR5cGVkQXJyYXkgb3JpZ2luYXRlZCBm
cm9tIFNoYXJlZEFycmF5QnVmZmVyLgorICAgIHN0YXRpYyBSZWZQdHI8dHlwZW5hbWUgQWRhcHRv
cjo6Vmlld1R5cGU+IHRvV3JhcHBlZEFsbG93U2hhcmVkKFZNJiwgSlNWYWx1ZSk7CiAgICAgCiBw
cml2YXRlOgogICAgIGZyaWVuZCBzdHJ1Y3QgVHlwZWRBcnJheUNsYXNzSW5mb3M7CkBAIC0zOTIs
NCArMzk0LDExIEBAIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRvV3JhcHBlZChWCiAgICAgcmV0dXJuIEpTQzo6dG9V
bnNoYXJlZE5hdGl2ZVR5cGVkVmlldzxBZGFwdG9yPih2bSwgdmFsdWUpOwogfQogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBBZGFwdG9yPgorUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dG9XcmFwcGVkQWxsb3dTaGFyZWQoVk0m
IHZtLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIHJldHVybiBKU0M6OnRvUG9zc2libHlTaGFyZWRO
YXRpdmVUeXBlZFZpZXc8QWRhcHRvcj4odm0sIHZhbHVlKTsKK30KKworCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKaW5kZXggOTU4
OTg5YzkyM2E0ZmFjYmY2NTc1Y2RkZjlmMTJlZDVlYWUxOGYyOC4uYzI3YjE1NmIxOWIwMGY0OWJj
NmUwYjk4ZjA4NDZhYjA2MjM4MGZmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5jcHAKQEAgLTM2Nyw2ICszNjcsNyBAQCBzdGF0aWMgdm9pZCBvdmVycmlkZURlZmF1
bHRzKCkKIAogI2lmICFFTkFCTEUoV0VCQVNTRU1CTFlfRkFTVF9NRU1PUlkpCiAgICAgT3B0aW9u
czo6dXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCkgPSBmYWxzZTsKKyAgICBPcHRpb25zOjp1c2VT
aGFyZWRBcnJheUJ1ZmZlcigpID0gZmFsc2U7CiAjZW5kaWYKIAogI2lmICFIQVZFKE1BQ0hfRVhD
RVBUSU9OUykKQEAgLTY1OSwxMyArNjYwLDE0IEBAIHZvaWQgT3B0aW9uczo6aW5pdGlhbGl6ZSgp
CiAjZW5kaWYKIAogI2lmIEFTQU5fRU5BQkxFRCAmJiBPUyhMSU5VWCkgJiYgRU5BQkxFKFdFQkFT
U0VNQkxZX0ZBU1RfTUVNT1JZKQotICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2Vt
Ymx5RmFzdE1lbW9yeSgpKSB7CisgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1i
bHlGYXN0TWVtb3J5KCkgfHwgT3B0aW9uczo6dXNlU2hhcmVkQXJyYXlCdWZmZXIoKSkgewogICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFzYW5PcHRpb25zID0gZ2V0ZW52KCJBU0FOX09QVElP
TlMiKTsKICAgICAgICAgICAgICAgICBib29sIG9rVG9Vc2VXZWJBc3NlbWJseUZhc3RNZW1vcnkg
PSBhc2FuT3B0aW9ucwogICAgICAgICAgICAgICAgICAgICAmJiAoc3Ryc3RyKGFzYW5PcHRpb25z
LCAiYWxsb3dfdXNlcl9zZWd2X2hhbmRsZXI9MSIpIHx8IHN0cnN0cihhc2FuT3B0aW9ucywgImhh
bmRsZV9zZWd2PTAiKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFva1RvVXNlV2ViQXNzZW1ibHlG
YXN0TWVtb3J5KSB7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiV0FSTklORzogQVNB
TiBpbnRlcmZlcmVzIHdpdGggSlNDIHNpZ25hbCBoYW5kbGVyczsgdXNlV2ViQXNzZW1ibHlGYXN0
TWVtb3J5IHdpbGwgYmUgZGlzYWJsZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dM
bigiV0FSTklORzogQVNBTiBpbnRlcmZlcmVzIHdpdGggSlNDIHNpZ25hbCBoYW5kbGVyczsgdXNl
V2ViQXNzZW1ibHlGYXN0TWVtb3J5IGFuZCB1c2VTaGFyZWRBcnJheUJ1ZmZlciB3aWxsIGJlIGRp
c2FibGVkLiIpOwogICAgICAgICAgICAgICAgICAgICBPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZh
c3RNZW1vcnkoKSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBPcHRpb25zOjp1c2VTaGFy
ZWRBcnJheUJ1ZmZlcigpID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWly
SVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2Vu
ZXJhdG9yLmNwcAppbmRleCA0M2QwYzg3MmVlNGM2M2I0ZDU2YjZmMGUzNDYyMzUzMzNlODRiNzkz
Li5mMDM3ZGExMzM5ZDM3YzJiYmFlM2E5ZWI4Y2YzMDY1NGYxMjIyMzc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTY4MCw3
ICs2ODAsNyBAQCBjbGFzcyBBaXJJUkdlbmVyYXRvciB7CiAgICAgVmVjdG9yPFR5cGVkVG1wPiBt
X2xvY2FsczsKICAgICBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIG1fdW5saW5rZWRX
YXNtVG9XYXNtQ2FsbHM7IC8vIExpc3QgZWFjaCBjYWxsIHNpdGUgYW5kIHRoZSBmdW5jdGlvbiBp
bmRleCB3aG9zZSBhZGRyZXNzIGl0IHNob3VsZCBiZSBwYXRjaGVkIHdpdGguCiAgICAgR1BSUmVn
IG1fbWVtb3J5QmFzZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKLSAgICBHUFJSZWcgbV9tZW1vcnlT
aXplR1BSIHsgSW52YWxpZEdQUlJlZyB9OworICAgIEdQUlJlZyBtX2JvdW5kc0NoZWNraW5nU2l6
ZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKICAgICBHUFJSZWcgbV93YXNtQ29udGV4dEluc3RhbmNl
R1BSIHsgSW52YWxpZEdQUlJlZyB9OwogICAgIGJvb2wgbV9tYWtlc0NhbGxzIHsgZmFsc2UgfTsK
IApAQCAtNzcyLDggKzc3Miw4IEBAIEFpcklSR2VuZXJhdG9yOjpBaXJJUkdlbmVyYXRvcihjb25z
dCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgQjM6OlByb2NlZHVyZSYgcHJvCiAgICAgICAgIG1f
Y29kZS5waW5SZWdpc3RlcihtX3dhc21Db250ZXh0SW5zdGFuY2VHUFIpOwogCiAgICAgaWYgKG1v
ZGUgIT0gTWVtb3J5TW9kZTo6U2lnbmFsaW5nKSB7Ci0gICAgICAgIG1fbWVtb3J5U2l6ZUdQUiA9
IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyOwotICAgICAgICBtX2NvZGUucGluUmVnaXN0ZXIobV9t
ZW1vcnlTaXplR1BSKTsKKyAgICAgICAgbV9ib3VuZHNDaGVja2luZ1NpemVHUFIgPSBwaW5uZWRS
ZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyOworICAgICAgICBtX2NvZGUucGluUmVnaXN0
ZXIobV9ib3VuZHNDaGVja2luZ1NpemVHUFIpOwogICAgIH0KIAogICAgIG1fY29kZS5zZXROdW1F
bnRyeXBvaW50cygxKTsKQEAgLTkxOCw3ICs5MTgsNyBAQCB2b2lkIEFpcklSR2VuZXJhdG9yOjpy
ZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVkU3RhY2tMaW1pdCByZXN0
bwogICAgICAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8qIHBpbm5lZFJlZ3MgPSAmUGlubmVk
UmVnaXN0ZXJJbmZvOjpnZXQoKTsKICAgICAgICAgUmVnaXN0ZXJTZXQgY2xvYmJlcnM7CiAgICAg
ICAgIGNsb2JiZXJzLnNldChwaW5uZWRSZWdzLT5iYXNlTWVtb3J5UG9pbnRlcik7Ci0gICAgICAg
IGNsb2JiZXJzLnNldChwaW5uZWRSZWdzLT5zaXplUmVnaXN0ZXIpOworICAgICAgICBjbG9iYmVy
cy5zZXQocGlubmVkUmVncy0+Ym91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIpOwogICAgICAgICBp
ZiAoIWlzQVJNNjQoKSkKICAgICAgICAgICAgIGNsb2JiZXJzLnNldChSZWdpc3RlclNldDo6bWFj
cm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogCkBAIC05MzMsMTIgKzkzMywxMiBAQCB2b2lkIEFpcklS
R2VuZXJhdG9yOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVkU3Rh
Y2tMaW1pdCByZXN0bwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoW3Bpbm5lZFJl
Z3NdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYgcGFyYW1zKSB7CiAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2Ug
YWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICBHUFJSZWcgYmFzZU1lbW9yeSA9IHBpbm5l
ZFJlZ3MtPmJhc2VNZW1vcnlQb2ludGVyOwotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hPclNp
emUgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUpID8gcGFyYW1zLmdw
U2NyYXRjaCgwKSA6IHBpbm5lZFJlZ3MtPnNpemVSZWdpc3RlcjsKKyAgICAgICAgICAgIEdQUlJl
ZyBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2Fj
YWdlOjpQcmltaXRpdmUpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IHBpbm5lZFJlZ3MtPmJvdW5k
c0NoZWNraW5nU2l6ZVJlZ2lzdGVyOwogCi0gICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MocGFyYW1zWzBdLmdwcigpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRN
ZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLT5zaXplUmVnaXN0ZXIpOworICAgICAgICAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhcmFtc1swXS5ncHIoKSwgSW5zdGFuY2U6
Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkpLCBwaW5uZWRSZWdzLT5ib3VuZHND
aGVja2luZ1NpemVSZWdpc3Rlcik7CiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MocGFyYW1zWzBdLmdwcigpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1v
cnkoKSksIGJhc2VNZW1vcnkpOwogCi0gICAgICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHko
R2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgcGlubmVkUmVncy0+c2l6ZVJlZ2lzdGVy
LCBzY3JhdGNoT3JTaXplKTsKKyAgICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdh
Y2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLT5ib3VuZHNDaGVja2luZ1Np
emVSZWdpc3Rlciwgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplKTsKICAgICAgICAgfSk7CiAK
ICAgICAgICAgZW1pdFBhdGNocG9pbnQoYmxvY2ssIHBhdGNocG9pbnQsIFRtcCgpLCBpbnN0YW5j
ZSk7CkBAIC0xMTY4LDggKzExNjgsMTIgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ3VycmVu
dE1lbW9yeShFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgYXV0
byB0ZW1wMSA9IGc2NCgpOwogICAgIGF1dG8gdGVtcDIgPSBnNjQoKTsKIAotICAgIFJFTEVBU0Vf
QVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9y
eVNpemUoKSwgQjM6OldpZHRoNjQpKTsKLSAgICBhcHBlbmQoTW92ZSwgQXJnOjphZGRyKGluc3Rh
bmNlVmFsdWUoKSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSwgdGVtcDEp
OworICAgIFJFTEVBU0VfQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEluc3RhbmNlOjpvZmZz
ZXRPZk1lbW9yeSgpLCBCMzo6V2lkdGg2NCkpOworICAgIFJFTEVBU0VfQVNTRVJUKEFyZzo6aXNW
YWxpZEFkZHJGb3JtKE1lbW9yeTo6b2Zmc2V0T2ZIYW5kbGUoKSwgQjM6OldpZHRoNjQpKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChBcmc6OmlzVmFsaWRBZGRyRm9ybShNZW1vcnlIYW5kbGU6Om9mZnNl
dE9mU2l6ZSgpLCBCMzo6V2lkdGg2NCkpOworICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoaW5z
dGFuY2VWYWx1ZSgpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSksIHRlbXAxKTsKKyAgICBh
cHBlbmQoTW92ZSwgQXJnOjphZGRyKHRlbXAxLCBNZW1vcnk6Om9mZnNldE9mSGFuZGxlKCkpLCB0
ZW1wMSk7CisgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcih0ZW1wMSwgTWVtb3J5SGFuZGxlOjpv
ZmZzZXRPZlNpemUoKSksIHRlbXAxKTsKICAgICBjb25zdGV4cHIgdWludDMyX3Qgc2hpZnRWYWx1
ZSA9IDE2OwogICAgIHN0YXRpY19hc3NlcnQoUGFnZUNvdW50OjpwYWdlU2l6ZSA9PSAxdWxsIDw8
IHNoaWZ0VmFsdWUsICJUaGlzIG11c3QgaG9sZCBmb3IgdGhlIGNvZGUgYmVsb3cgdG8gYmUgY29y
cmVjdC4iKTsKICAgICBhcHBlbmQoTW92ZSwgQXJnOjppbW0oMTYpLCB0ZW1wMik7CkBAIC0xMzYz
LDE1ICsxMzY3LDE2IEBAIGlubGluZSBBaXJJUkdlbmVyYXRvcjo6RXhwcmVzc2lvblR5cGUgQWly
SVJHZW5lcmF0b3I6OmVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyCiAKICAgICBzd2l0Y2ggKG1f
bW9kZSkgewogICAgIGNhc2UgTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmc6IHsKLSAgICAgICAg
Ly8gV2UncmUgbm90IHVzaW5nIHNpZ25hbCBoYW5kbGluZyBhdCBhbGwsIHdlIG11c3QgdGhlcmVm
b3JlIGNoZWNrIHRoYXQgbm8gbWVtb3J5IGFjY2VzcyBleGNlZWRzIHRoZSBjdXJyZW50IG1lbW9y
eSBzaXplLgotICAgICAgICBBU1NFUlQobV9tZW1vcnlTaXplR1BSKTsKKyAgICAgICAgLy8gSW4g
Ym91bmQgY2hlY2tpbmcgbW9kZSwgd2hpbGUgc2hhcmVkIHdhc20gbWVtb3J5IHBhcnRpYWxseSBy
ZWxpZXMgb24gc2lnbmFsIGhhbmRsZXIgdG9vLCB3ZSBuZWVkIHRvIHBlcmZvcm0gYm91bmQgY2hl
Y2tpbmcKKyAgICAgICAgLy8gdG8gZW5zdXJlIHRoYXQgbm8gbWVtb3J5IGFjY2VzcyBleGNlZWRz
IHRoZSBjdXJyZW50IG1lbW9yeSBzaXplLgorICAgICAgICBBU1NFUlQobV9ib3VuZHNDaGVja2lu
Z1NpemVHUFIpOwogICAgICAgICBBU1NFUlQoc2l6ZU9mT3BlcmF0aW9uICsgb2Zmc2V0ID4gb2Zm
c2V0KTsKICAgICAgICAgYXV0byB0ZW1wID0gZzY0KCk7CiAgICAgICAgIGFwcGVuZChNb3ZlLCBB
cmc6OmJpZ0ltbShzdGF0aWNfY2FzdDx1aW50NjRfdD4oc2l6ZU9mT3BlcmF0aW9uKSArIG9mZnNl
dCAtIDEpLCB0ZW1wKTsKICAgICAgICAgYXBwZW5kKEFkZDY0LCByZXN1bHQsIHRlbXApOwogCiAg
ICAgICAgIGVtaXRDaGVjayhbJl0gewotICAgICAgICAgICAgcmV0dXJuIEluc3QoQnJhbmNoNjQs
IG51bGxwdHIsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsKSwgdGVt
cCwgVG1wKG1fbWVtb3J5U2l6ZUdQUikpOworICAgICAgICAgICAgcmV0dXJuIEluc3QoQnJhbmNo
NjQsIG51bGxwdHIsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsKSwg
dGVtcCwgVG1wKG1fYm91bmRzQ2hlY2tpbmdTaXplR1BSKSk7CiAgICAgICAgIH0sIFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAg
ICAgICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBlOjpP
dXRPZkJvdW5kc01lbW9yeUFjY2Vzcyk7CiAgICAgICAgIH0pOwpAQCAtMjE1NCw3ICsyMTU5LDcg
QEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBj
b25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwKICAgICAgICAgYXV0byogcGF0Y2hwb2ludCA9IGVt
aXRDYWxsUGF0Y2hwb2ludChtX2N1cnJlbnRCbG9jaywgc2lnbmF0dXJlLCByZXN1bHRzLCBhcmdz
KTsKICAgICAgICAgLy8gV2UgbmVlZCB0byBjbG9iYmVyIHRoZSBzaXplIHJlZ2lzdGVyIHNpbmNl
IHRoZSBMTEludCBhbHdheXMgYm91bmRzIGNoZWNrcwogICAgICAgICBpZiAobV9tb2RlID09IE1l
bW9yeU1vZGU6OlNpZ25hbGluZykKLSAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRl
KFJlZ2lzdGVyU2V0IHsgUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS5zaXplUmVnaXN0ZXIgfSk7
CisgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldCB7IFBpbm5l
ZFJlZ2lzdGVySW5mbzo6Z2V0KCkuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgfSk7CiAgICAg
ICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIGZ1
bmN0aW9uSW5kZXhdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxs
ID0gaml0LnRocmVhZFNhZmVQYXRjaGFibGVOZWFyQ2FsbCgpOwpAQCAtMjI3OCwxMyArMjI4Mywx
MyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJ
bmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYQogICAgICAgICAgICAgaml0LnN0b3JlV2FzbUNv
bnRleHRJbnN0YW5jZShuZXdDb250ZXh0SW5zdGFuY2UpOwogICAgICAgICAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBzdXBwb3J0IG1vcmUgdGhhbiBvbmUgbWVtb3J5IHNpemUgcmVnaXN0ZXIKICAg
ICAgICAgICAgIC8vICAgc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYyOTUyCi0gICAgICAgICAgICBBU1NFUlQocGlubmVkUmVncy5zaXplUmVnaXN0ZXIgIT0g
bmV3Q29udGV4dEluc3RhbmNlKTsKLSAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoT3JTaXplID0g
R2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IHBhcmFtcy5ncFNjcmF0
Y2goMCkgOiBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcjsKKyAgICAgICAgICAgIEFTU0VSVChwaW5u
ZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyICE9IG5ld0NvbnRleHRJbnN0YW5jZSk7
CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplID0gR2lnYWNh
Z2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkg
OiBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyOwogCi0gICAgICAgICAgICBq
aXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobmV3Q29udGV4dEluc3RhbmNlLCBJbnN0
YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rl
cik7IC8vIE1lbW9yeSBzaXplLgorICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKG5ld0NvbnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91
bmRzQ2hlY2tpbmdTaXplKCkpLCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVy
KTsgLy8gQm91bmQgY2hlY2tpbmcgc2l6ZS4KICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxs
SGVscGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNh
Y2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7IC8vIE1lbW9yeTo6dm9pZCouCiAKLSAgICAgICAg
ICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5
LCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlciwgc2NyYXRjaE9yU2l6ZSk7CisgICAgICAgICAgICBq
aXQuY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgcGlu
bmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlciwgc2NyYXRjaE9yQm91bmRzQ2hlY2tp
bmdTaXplKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgZW1pdFBhdGNocG9pbnQoZG9Db250ZXh0
U3dpdGNoLCBwYXRjaHBvaW50LCBUbXAoKSwgbmV3Q29udGV4dEluc3RhbmNlLCBpbnN0YW5jZVZh
bHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwCmluZGV4IDMwYjNjNzcyMzJmMmRlZTVmNDU5M2E0YmM4OTk1NjU3ZjEzOThkZmIuLjk2
ZjNhYWNmOTZiNDIyMDExOGViY2ZlOGUxYzE4NWMyZDdmM2VjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTMyNSw3ICszMjUs
NyBAQCBjbGFzcyBCM0lSR2VuZXJhdG9yIHsKICAgICBJbnNlcnRpb25TZXQgbV9jb25zdGFudElu
c2VydGlvblZhbHVlczsKICAgICBWYWx1ZSogbV9mcmFtZVBvaW50ZXIgeyBudWxscHRyIH07CiAg
ICAgR1BSUmVnIG1fbWVtb3J5QmFzZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKLSAgICBHUFJSZWcg
bV9tZW1vcnlTaXplR1BSIHsgSW52YWxpZEdQUlJlZyB9OworICAgIEdQUlJlZyBtX2JvdW5kc0No
ZWNraW5nU2l6ZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKICAgICBHUFJSZWcgbV93YXNtQ29udGV4
dEluc3RhbmNlR1BSIHsgSW52YWxpZEdQUlJlZyB9OwogICAgIGJvb2wgbV9tYWtlc0NhbGxzIHsg
ZmFsc2UgfTsKIApAQCAtNDA4LDggKzQwOCw4IEBAIEIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0
b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFByb2NlZHVyZSYgcHJvY2VkdXJlCiAg
ICAgICAgIG1fcHJvYy5waW5SZWdpc3RlcihtX3dhc21Db250ZXh0SW5zdGFuY2VHUFIpOwogCiAg
ICAgaWYgKG1vZGUgIT0gTWVtb3J5TW9kZTo6U2lnbmFsaW5nKSB7Ci0gICAgICAgIG1fbWVtb3J5
U2l6ZUdQUiA9IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyOwotICAgICAgICBtX3Byb2MucGluUmVn
aXN0ZXIobV9tZW1vcnlTaXplR1BSKTsKKyAgICAgICAgbV9ib3VuZHNDaGVja2luZ1NpemVHUFIg
PSBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyOworICAgICAgICBtX3Byb2Mu
cGluUmVnaXN0ZXIobV9ib3VuZHNDaGVja2luZ1NpemVHUFIpOwogICAgIH0KIAogICAgIGlmIChp
bmZvLm1lbW9yeSkgewpAQCAtNDE3LDcgKzQxNyw3IEBAIEIzSVJHZW5lcmF0b3I6OkIzSVJHZW5l
cmF0b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFByb2NlZHVyZSYgcHJvY2VkdXJl
CiAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNo
KGppdCk7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fbW9kZSkgewogICAgICAgICAgICAgY2FzZSBN
ZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZzoKLSAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VE
KHBpbm5lZEdQUiwgbV9tZW1vcnlTaXplR1BSID09IHBpbm5lZEdQUik7CisgICAgICAgICAgICAg
ICAgQVNTRVJUX1VOVVNFRChwaW5uZWRHUFIsIG1fYm91bmRzQ2hlY2tpbmdTaXplR1BSID09IHBp
bm5lZEdQUik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIE1lbW9y
eU1vZGU6OlNpZ25hbGluZzoKICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHBpbm5lZEdQ
UiwgSW52YWxpZEdQUlJlZyA9PSBwaW5uZWRHUFIpOwpAQCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQg
QjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoUmVzdG9yZUNhY2hl
ZFN0YWNrTGltaXQgcmVzdG9yCiAgICAgICAgIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyogcGlu
bmVkUmVncyA9ICZQaW5uZWRSZWdpc3RlckluZm86OmdldCgpOwogICAgICAgICBSZWdpc3RlclNl
dCBjbG9iYmVyczsKICAgICAgICAgY2xvYmJlcnMuc2V0KHBpbm5lZFJlZ3MtPmJhc2VNZW1vcnlQ
b2ludGVyKTsKLSAgICAgICAgY2xvYmJlcnMuc2V0KHBpbm5lZFJlZ3MtPnNpemVSZWdpc3Rlcik7
CisgICAgICAgIGNsb2JiZXJzLnNldChwaW5uZWRSZWdzLT5ib3VuZHNDaGVja2luZ1NpemVSZWdp
c3Rlcik7CiAgICAgICAgIGlmICghaXNBUk02NCgpKQogICAgICAgICAgICAgY2xvYmJlcnMuc2V0
KFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAKQEAgLTU2MSwxMiArNTYx
LDEyIEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUo
UmVzdG9yZUNhY2hlZFN0YWNrTGltaXQgcmVzdG9yCiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdl
bmVyYXRvcihbcGlubmVkUmVnc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgIEFsbG93TWFjcm9TY3Jh
dGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgIEdQUlJlZyBi
YXNlTWVtb3J5ID0gcGlubmVkUmVncy0+YmFzZU1lbW9yeVBvaW50ZXI7Ci0gICAgICAgICAgICBH
UFJSZWcgc2NyYXRjaE9yU2l6ZSA9IEdpZ2FjYWdlOjppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1p
dGl2ZSkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogcGlubmVkUmVncy0+c2l6ZVJlZ2lzdGVyOwor
ICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSA9IEdpZ2FjYWdl
Ojppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDog
cGlubmVkUmVncy0+Ym91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXI7CiAKLSAgICAgICAgICAgIGpp
dC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCksIEluc3RhbmNl
OjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBpbm5lZFJlZ3MtPnNpemVSZWdpc3Rlcik7
CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFyYW1zWzBd
LmdwcigpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSksIHBp
bm5lZFJlZ3MtPmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsKICAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCksIEluc3RhbmNlOjpv
ZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7CiAKLSAgICAgICAgICAgIGppdC5j
YWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRS
ZWdzLT5zaXplUmVnaXN0ZXIsIHNjcmF0Y2hPclNpemUpOworICAgICAgICAgICAgaml0LmNhZ2VD
b25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJlZ3Mt
PmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUp
OwogICAgICAgICB9KTsKICAgICB9CiB9CkBAIC03OTMsNyArNzkzLDkgQEAgYXV0byBCM0lSR2Vu
ZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBlIGRlbHRhLCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KQogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBzdGF0aWNfYXNzZXJ0KHNp
emVvZihkZWNsdHlwZShzdGF0aWNfY2FzdDxNZW1vcnkqPihudWxscHRyKS0+c2l6ZSgpKSkgPT0g
c2l6ZW9mKHVpbnQ2NF90KSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOwotICAgIFZh
bHVlKiBzaXplID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9j
LCBMb2FkLCBJbnQ2NCwgb3JpZ2luKCksIGluc3RhbmNlVmFsdWUoKSwgc2FmZUNhc3Q8aW50MzJf
dD4oSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSk7CisgICAgVmFsdWUqIG1l
bW9yeSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9h
ZCwgSW50NjQsIG9yaWdpbigpLCBpbnN0YW5jZVZhbHVlKCksIHNhZmVDYXN0PGludDMyX3Q+KElu
c3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSk7CisgICAgVmFsdWUqIGhhbmRsZSA9IG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50NjQsIG9yaWdp
bigpLCBtZW1vcnksIHNhZmVDYXN0PGludDMyX3Q+KE1lbW9yeTo6b2Zmc2V0T2ZIYW5kbGUoKSkp
OworICAgIFZhbHVlKiBzaXplID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4obV9wcm9jLCBMb2FkLCBJbnQ2NCwgb3JpZ2luKCksIGhhbmRsZSwgc2FmZUNhc3Q8aW50MzJf
dD4oTWVtb3J5SGFuZGxlOjpvZmZzZXRPZlNpemUoKSkpOwogCiAgICAgY29uc3RleHByIHVpbnQz
Ml90IHNoaWZ0VmFsdWUgPSAxNjsKICAgICBzdGF0aWNfYXNzZXJ0KFBhZ2VDb3VudDo6cGFnZVNp
emUgPT0gMXVsbCA8PCBzaGlmdFZhbHVlLCAiVGhpcyBtdXN0IGhvbGQgZm9yIHRoZSBjb2RlIGJl
bG93IHRvIGJlIGNvcnJlY3QuIik7CkBAIC05NTQsOSArOTU2LDkgQEAgaW5saW5lIFZhbHVlKiBC
M0lSR2VuZXJhdG9yOjplbWl0Q2hlY2tBbmRQcmVwYXJlUG9pbnRlcihFeHByZXNzaW9uVHlwZSBw
b2ludGVyLAogICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgY2FzZSBNZW1vcnlNb2RlOjpCb3Vu
ZHNDaGVja2luZzogewogICAgICAgICAvLyBXZSdyZSBub3QgdXNpbmcgc2lnbmFsIGhhbmRsaW5n
IGF0IGFsbCwgd2UgbXVzdCB0aGVyZWZvcmUgY2hlY2sgdGhhdCBubyBtZW1vcnkgYWNjZXNzIGV4
Y2VlZHMgdGhlIGN1cnJlbnQgbWVtb3J5IHNpemUuCi0gICAgICAgIEFTU0VSVChtX21lbW9yeVNp
emVHUFIpOworICAgICAgICBBU1NFUlQobV9ib3VuZHNDaGVja2luZ1NpemVHUFIpOwogICAgICAg
ICBBU1NFUlQoc2l6ZU9mT3BlcmF0aW9uICsgb2Zmc2V0ID4gb2Zmc2V0KTsKLSAgICAgICAgbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxXYXNtQm91bmRzQ2hlY2tWYWx1ZT4obV9wcm9jLCBvcmln
aW4oKSwgbV9tZW1vcnlTaXplR1BSLCBwb2ludGVyLCBzaXplT2ZPcGVyYXRpb24gKyBvZmZzZXQg
LSAxKTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxXYXNtQm91bmRzQ2hlY2tW
YWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgbV9ib3VuZHNDaGVja2luZ1NpemVHUFIsIHBvaW50ZXIs
IHNpemVPZk9wZXJhdGlvbiArIG9mZnNldCAtIDEpOwogICAgICAgICBicmVhazsKICAgICB9CiAK
QEAgLTE3MTAsNyArMTcxMiw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJf
dCBmdW5jdGlvbkluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwKIAogICAgICAgICAg
ICAgICAgIC8vIFdlIG5lZWQgdG8gY2xvYmJlciB0aGUgc2l6ZSByZWdpc3RlciBzaW5jZSB0aGUg
TExJbnQgYWx3YXlzIGJvdW5kcyBjaGVja3MKICAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09
IE1lbW9yeU1vZGU6OlNpZ25hbGluZykKLSAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+
Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXQgeyBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnNpemVS
ZWdpc3RlciB9KTsKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUo
UmVnaXN0ZXJTZXQgeyBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLmJvdW5kc0NoZWNraW5nU2l6
ZVJlZ2lzdGVyIH0pOwogICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihb
dW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIGZ1bmN0aW9uSW5kZXhdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgICAg
ICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwog
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC50aHJlYWRT
YWZlUGF0Y2hhYmxlTmVhckNhbGwoKTsKQEAgLTE4MzEsMTYgKzE4MzMsMTYgQEAgYXV0byBCM0lS
R2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2ln
bmF0dXJlJiBzaWduYXQKICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhvbGRDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZFN0YWNrTGlt
aXQoKSksIGJhc2VNZW1vcnkpOwogICAgICAgICAgICAgaml0LnN0b3JlUHRyKGJhc2VNZW1vcnks
IENDYWxsSGVscGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZz
ZXRPZkNhY2hlZFN0YWNrTGltaXQoKSkpOwogICAgICAgICAgICAgaml0LnN0b3JlV2FzbUNvbnRl
eHRJbnN0YW5jZShuZXdDb250ZXh0SW5zdGFuY2UpOwotICAgICAgICAgICAgQVNTRVJUKHBpbm5l
ZFJlZ3Muc2l6ZVJlZ2lzdGVyICE9IGJhc2VNZW1vcnkpOworICAgICAgICAgICAgQVNTRVJUKHBp
bm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgIT0gYmFzZU1lbW9yeSk7CiAgICAg
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBtZW1vcnkg
c2l6ZSByZWdpc3RlcgogICAgICAgICAgICAgLy8gICBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKLSAgICAgICAgICAgIEFTU0VSVChwaW5uZWRSZWdz
LnNpemVSZWdpc3RlciAhPSBuZXdDb250ZXh0SW5zdGFuY2UpOwotICAgICAgICAgICAgR1BSUmVn
IHNjcmF0Y2hPclNpemUgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUp
ID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyOworICAgICAg
ICAgICAgQVNTRVJUKHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgIT0gbmV3
Q29udGV4dEluc3RhbmNlKTsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoT3JCb3VuZHNDaGVj
a2luZ1NpemUgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUpID8gcGFy
YW1zLmdwU2NyYXRjaCgwKSA6IHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXI7
CiAKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhuZXdDb250
ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBpbm5l
ZFJlZ3Muc2l6ZVJlZ2lzdGVyKTsgLy8gTWVtb3J5IHNpemUuCisgICAgICAgICAgICBqaXQubG9h
ZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobmV3Q29udGV4dEluc3RhbmNlLCBJbnN0YW5jZTo6
b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSksIHBpbm5lZFJlZ3MuYm91bmRzQ2hl
Y2tpbmdTaXplUmVnaXN0ZXIpOyAvLyBNZW1vcnkgc2l6ZS4KICAgICAgICAgICAgIGppdC5sb2Fk
UHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpv
ZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7IC8vIE1lbW9yeTo6dm9pZCouCiAK
LSAgICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBi
YXNlTWVtb3J5LCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlciwgc2NyYXRjaE9yU2l6ZSk7CisgICAg
ICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1l
bW9yeSwgcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlciwgc2NyYXRjaE9yQm91
bmRzQ2hlY2tpbmdTaXplKTsKICAgICAgICAgfSk7CiAgICAgICAgIGRvQ29udGV4dFN3aXRjaC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywgSnVtcCwgb3JpZ2luKCksIGNvbnRpbnVhdGlv
bik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5n
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAppbmRleCA5
NDFkMDE2MzdjY2M5MDI3YmIzMDk0ZjlmMmNjY2IyZTZjZDMxYTkyLi42NTc1OWE3Y2MwOTU0ZDZh
Yjc1OWViNGE4YThjMTUxOTRjYjljYWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQmluZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUJpbmRpbmcuY3BwCkBAIC00OSw5ICs0OSw5IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvV2FzbSh1bnNp
CiAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVyOwog
ICAgIEFTU0VSVChiYXNlTWVtb3J5ICE9IEdQUlJlZzo6SW52YWxpZEdQUlJlZyk7CiAgICAgQVNT
RVJUKGJhc2VNZW1vcnkgIT0gc2NyYXRjaCk7Ci0gICAgQVNTRVJUKHBpbm5lZFJlZ3Muc2l6ZVJl
Z2lzdGVyICE9IGJhc2VNZW1vcnkpOwotICAgIEFTU0VSVChwaW5uZWRSZWdzLnNpemVSZWdpc3Rl
ciAhPSBzY3JhdGNoKTsKLSAgICBHUFJSZWcgc2l6ZVJlZ0FzU2NyYXRjaCA9IHBpbm5lZFJlZ3Mu
c2l6ZVJlZ2lzdGVyOworICAgIEFTU0VSVChwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJl
Z2lzdGVyICE9IGJhc2VNZW1vcnkpOworICAgIEFTU0VSVChwaW5uZWRSZWdzLmJvdW5kc0NoZWNr
aW5nU2l6ZVJlZ2lzdGVyICE9IHNjcmF0Y2gpOworICAgIEdQUlJlZyBzaXplUmVnQXNTY3JhdGNo
ID0gcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlcjsKICAgICBBU1NFUlQoc2l6
ZVJlZ0FzU2NyYXRjaCAhPSBHUFJSZWc6OkludmFsaWRHUFJSZWcpOwogCiAgICAgLy8gQjMncyBj
YWxsIGNvZGVnZW4gZW5zdXJlcyB0aGF0IHRoZSBKU0NlbGwgaXMgYSBXZWJBc3NlbWJseUZ1bmN0
aW9uLgpAQCAtNjgsMTEgKzY4LDExIEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxX
YXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvV2FzbSh1bnNpCiAgICAgLy8g
RklYTUUgdGhlIGZvbGxvd2luZyBjb2RlIGFzc3VtZXMgdGhhdCBhbGwgV2FzbTo6SW5zdGFuY2Ug
aGF2ZSB0aGUgc2FtZSBwaW5uZWQgcmVnaXN0ZXJzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYyOTUyCiAgICAgLy8gU2V0IHVwIHRoZSBjYWxsZWUncyBiYXNlTWVt
b3J5IHJlZ2lzdGVyIGFzIHdlbGwgYXMgdGhlIG1lbW9yeSBzaXplIHJlZ2lzdGVycy4KICAgICB7
Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoT3JTaXplID0gIUdpZ2FjYWdlOjppc0VuYWJsZWQoR2ln
YWNhZ2U6OlByaW1pdGl2ZSkgPyBwaW5uZWRSZWdzLnNpemVSZWdpc3RlciA6IHdhc21DYWxsaW5n
Q29udmVudGlvbigpLnByb2xvZ3VlU2NyYXRjaEdQUnNbMV07CisgICAgICAgIEdQUlJlZyBzY3Jh
dGNoT3JCb3VuZHNDaGVja2luZ1NpemUgPSAhR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6
UHJpbWl0aXZlKSA/IHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgOiB3YXNt
Q2FsbGluZ0NvbnZlbnRpb24oKS5wcm9sb2d1ZVNjcmF0Y2hHUFJzWzFdOwogCi0gICAgICAgIGpp
dC5sb2FkUHRyKEpJVDo6QWRkcmVzcyhiYXNlTWVtb3J5LCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0
T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlcik7IC8vIE1lbW9y
eSBzaXplLgorICAgICAgICBqaXQubG9hZFB0cihKSVQ6OkFkZHJlc3MoYmFzZU1lbW9yeSwgV2Fz
bTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkpLCBwaW5uZWRS
ZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsgLy8gQm91bmQgY2hlY2tpbmcgc2l6ZS4K
ICAgICAgICAgaml0LmxvYWRQdHIoSklUOjpBZGRyZXNzKGJhc2VNZW1vcnksIFdhc206Okluc3Rh
bmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7IC8vIFdhc206Ok1lbW9y
eTo6VGFnZ2VkQXJyYXlTdG9yYWdlUHRyPHZvaWQ+ICh2b2lkKikuCi0gICAgICAgIGppdC5jYWdl
Q29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdz
LnNpemVSZWdpc3Rlciwgc2NyYXRjaE9yU2l6ZSk7CisgICAgICAgIGppdC5jYWdlQ29uZGl0aW9u
YWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLmJvdW5kc0No
ZWNraW5nU2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOwogICAgIH0K
IAogICAgIC8vIFRhaWwgY2FsbCBpbnRvIHRoZSBjYWxsZWUgV2ViQXNzZW1ibHkgZnVuY3Rpb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxI
YW5kbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhh
bmRsZXIuY3BwCmluZGV4IDNlYTAwODg5MDFiNmMyN2NmNjViMGI0NzRkZDhkYzk1Yzc4MTUxZmYu
LjA0YzM0YjdlOGFlNmQ3ZGU2YWE5YWY0MDkzNmE4YzNlMmE1NzRjNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCkBA
IC02MywyOSArNjMsNDAgQEAgc3RhdGljIFNpZ25hbEFjdGlvbiB0cmFwSGFuZGxlcihTaWduYWws
IFNpZ0luZm8mIHNpZ0luZm8sIFBsYXRmb3JtUmVnaXN0ZXJzJiBjb24KICAgICBkYXRhTG9nTG5J
ZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJzdGFydGluZyBoYW5k
bGVyIGZvciBmYXVsdCBhdDogIiwgUmF3UG9pbnRlcihmYXVsdGluZ0luc3RydWN0aW9uKSk7CiAK
ICAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2Us
ICJKSVQgbWVtb3J5IHN0YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0T2ZGaXhlZEV4ZWN1dGFibGVN
ZW1vcnlQb29sKCkpLCAiIGVuZDogIiwgUmF3UG9pbnRlcihlbmRPZkZpeGVkRXhlY3V0YWJsZU1l
bW9yeVBvb2woKSkpOwotICAgIC8vIEZpcnN0IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGFyZSBp
biBKSVQgY29kZSBiZWZvcmUgd2UgY2FuIGFxdWlyZSBhbnkgbG9ja3MuIE90aGVyd2lzZSwKKyAg
ICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJX
YXNtTExJbnQgbWVtb3J5IHN0YXJ0OiAiLCBSYXdQb2ludGVyKHVudGFnQ29kZVB0cjx2b2lkKiwg
Q0Z1bmN0aW9uUHRyVGFnPihMTEludDo6d2FzbUxMSW50UENSYW5nZVN0YXJ0KSksICIgZW5kOiAi
LCBSYXdQb2ludGVyKHVudGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnPihMTEludDo6
d2FzbUxMSW50UENSYW5nZUVuZCkpKTsKKyAgICAvLyBGaXJzdCB3ZSBuZWVkIHRvIG1ha2Ugc3Vy
ZSB3ZSBhcmUgaW4gSklUIGNvZGUgb3IgV2FzbSBMTEludCBjb2RlIGJlZm9yZSB3ZSBjYW4gYXF1
aXJlIGFueSBsb2Nrcy4gT3RoZXJ3aXNlLAogICAgIC8vIHdlIG1pZ2h0IGhhdmUgY3Jhc2hlZCBp
biBjb2RlIHRoYXQgaXMgYWxyZWFkeSBob2xkaW5nIG9uZSBvZiB0aGUgbG9ja3Mgd2Ugd2FudCB0
byBhcXVpcmUuCiAgICAgYXNzZXJ0SXNOb3RUYWdnZWQoZmF1bHRpbmdJbnN0cnVjdGlvbik7Ci0g
ICAgaWYgKGlzSklUUEMoZmF1bHRpbmdJbnN0cnVjdGlvbikpIHsKLSAgICAgICAgYm9vbCBmYXVs
dGVkSW5BY3RpdmVGYXN0TWVtb3J5ID0gZmFsc2U7CisgICAgaWYgKGlzSklUUEMoZmF1bHRpbmdJ
bnN0cnVjdGlvbikgfHwgTExJbnQ6OmlzV2FzbUxMSW50UEMoZmF1bHRpbmdJbnN0cnVjdGlvbikp
IHsKKyAgICAgICAgYm9vbCBmYXVsdGVkSW5BY3RpdmVHcm93YWJsZU1lbW9yeSA9IGZhbHNlOwog
ICAgICAgICB7CiAgICAgICAgICAgICB2b2lkKiBmYXVsdGluZ0FkZHJlc3MgPSBzaWdJbmZvLmZh
dWx0aW5nQWRkcmVzczsKICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhh
bmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImNoZWNraW5nIGZhdWx0aW5nIGFkZHJlc3M6ICIsIFJh
d1BvaW50ZXIoZmF1bHRpbmdBZGRyZXNzKSwgIiBpcyBpbiBhbiBhY3RpdmUgZmFzdCBtZW1vcnki
KTsKLSAgICAgICAgICAgIGZhdWx0ZWRJbkFjdGl2ZUZhc3RNZW1vcnkgPSBXYXNtOjpNZW1vcnk6
OmFkZHJlc3NJc0luQWN0aXZlRmFzdE1lbW9yeShmYXVsdGluZ0FkZHJlc3MpOworICAgICAgICAg
ICAgZmF1bHRlZEluQWN0aXZlR3Jvd2FibGVNZW1vcnkgPSBXYXNtOjpNZW1vcnk6OmFkZHJlc3NJ
c0luQWN0aXZlR3Jvd2FibGVNZW1vcnkoZmF1bHRpbmdBZGRyZXNzKTsKICAgICAgICAgfQotICAg
ICAgICBpZiAoZmF1bHRlZEluQWN0aXZlRmFzdE1lbW9yeSkgeworICAgICAgICBpZiAoZmF1bHRl
ZEluQWN0aXZlR3Jvd2FibGVNZW1vcnkpIHsKICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21G
YXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZvdW5kIGFjdGl2ZSBmYXN0IG1l
bW9yeSBmb3IgZmF1bHRpbmcgYWRkcmVzcyIpOwotICAgICAgICAgICAgYXV0byYgY2FsbGVlUmVn
aXN0cnkgPSBDYWxsZWVSZWdpc3RyeTo6c2luZ2xldG9uKCk7Ci0gICAgICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKGNhbGxlZVJlZ2lzdHJ5LmdldExvY2soKSk7Ci0gICAgICAgICAgICBm
b3IgKGF1dG8qIGNhbGxlZSA6IGNhbGxlZVJlZ2lzdHJ5LmFsbENhbGxlZXMobG9ja2VyKSkgewot
ICAgICAgICAgICAgICAgIGF1dG8gW3N0YXJ0LCBlbmRdID0gY2FsbGVlLT5yYW5nZSgpOwotICAg
ICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6
dmVyYm9zZSwgImZ1bmN0aW9uIHN0YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0KSwgIiBlbmQ6ICIs
IFJhd1BvaW50ZXIoZW5kKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXJ0IDw9IGZhdWx0aW5n
SW5zdHJ1Y3Rpb24gJiYgZmF1bHRpbmdJbnN0cnVjdGlvbiA8IGVuZCkgewotICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJv
c2UsICJmb3VuZCBtYXRjaCIpOwotICAgICAgICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6
YXJndW1lbnRQb2ludGVyPDE+KGNvbnRleHQpID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3Rh
dGljX2Nhc3Q8dWludHB0cl90PihXYXNtOjpDb250ZXh0Ojp1c2VGYXN0VExTKCkpKTsKLSAgICAg
ICAgICAgICAgICAgICAgTWFjaGluZUNvbnRleHQ6OnNldEluc3RydWN0aW9uUG9pbnRlcihjb250
ZXh0LCBMTEludDo6Z2V0Q29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+KHdhc21fdGhyb3dfZnJvbV9m
YXVsdF9oYW5kbGVyX3RyYW1wb2xpbmUpKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNp
Z25hbEFjdGlvbjo6SGFuZGxlZDsKKworICAgICAgICAgICAgYXV0byBkb2VzRmF1bHRJbldhc20g
PSBbXSh2b2lkKiBmYXVsdGluZ0luc3RydWN0aW9uKSB7CisgICAgICAgICAgICAgICAgaWYgKExM
SW50Ojppc1dhc21MTEludFBDKGZhdWx0aW5nSW5zdHJ1Y3Rpb24pKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBhdXRvJiBjYWxsZWVSZWdpc3RyeSA9
IENhbGxlZVJlZ2lzdHJ5OjpzaW5nbGV0b24oKTsKKyAgICAgICAgICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKGNhbGxlZVJlZ2lzdHJ5LmdldExvY2soKSk7CisgICAgICAgICAgICAgICAg
Zm9yIChhdXRvKiBjYWxsZWUgOiBjYWxsZWVSZWdpc3RyeS5hbGxDYWxsZWVzKGxvY2tlcikpIHsK
KyAgICAgICAgICAgICAgICAgICAgYXV0byBbc3RhcnQsIGVuZF0gPSBjYWxsZWUtPnJhbmdlKCk7
CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJ
bnRlcm5hbDo6dmVyYm9zZSwgImZ1bmN0aW9uIHN0YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0KSwg
IiBlbmQ6ICIsIFJhd1BvaW50ZXIoZW5kKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdGFy
dCA8PSBmYXVsdGluZ0luc3RydWN0aW9uICYmIGZhdWx0aW5nSW5zdHJ1Y3Rpb24gPCBlbmQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRs
ZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZvdW5kIG1hdGNoIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9OworCisgICAg
ICAgICAgICBpZiAoZG9lc0ZhdWx0SW5XYXNtKGZhdWx0aW5nSW5zdHJ1Y3Rpb24pKSB7CisgICAg
ICAgICAgICAgICAgTWFjaGluZUNvbnRleHQ6OmFyZ3VtZW50UG9pbnRlcjwxPihjb250ZXh0KSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oV2FzbTo6Q29u
dGV4dDo6dXNlRmFzdFRMUygpKSk7CisgICAgICAgICAgICAgICAgTWFjaGluZUNvbnRleHQ6OnNl
dEluc3RydWN0aW9uUG9pbnRlcihjb250ZXh0LCBMTEludDo6Z2V0Q29kZVB0cjxDRnVuY3Rpb25Q
dHJUYWc+KHdhc21fdGhyb3dfZnJvbV9mYXVsdF9oYW5kbGVyX3RyYW1wb2xpbmUpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gU2lnbmFsQWN0aW9uOjpIYW5kbGVkOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQpAQCAtMTA3LDcgKzExOCw3IEBAIHZvaWQgZW5hYmxlRmFzdE1lbW9y
eSgpCiAgICAgICAgIGlmICghV2FzbTo6aXNTdXBwb3J0ZWQoKSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpKQor
ICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpICYmICFPcHRp
b25zOjp1c2VTaGFyZWRBcnJheUJ1ZmZlcigpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIGFjdGl2YXRlU2lnbmFsSGFuZGxlcnNGb3IoU2lnbmFsOjpBY2Nlc3NGYXVsdCk7CkBAIC0x
MjUsNyArMTM2LDcgQEAgdm9pZCBwcmVwYXJlRmFzdE1lbW9yeSgpCiAgICAgICAgIGlmICghV2Fz
bTo6aXNTdXBwb3J0ZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIU9w
dGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpKQorICAgICAgICBpZiAoIU9wdGlvbnM6
OnVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpICYmICFPcHRpb25zOjp1c2VTaGFyZWRBcnJheUJ1
ZmZlcigpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGFkZFNpZ25hbEhhbmRsZXIo
U2lnbmFsOjpBY2Nlc3NGYXVsdCwgW10gKFNpZ25hbCBzaWduYWwsIFNpZ0luZm8mIHNpZ0luZm8s
IFBsYXRmb3JtUmVnaXN0ZXJzJiB1Y29udGV4dCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtSW5zdGFuY2UuaAppbmRleCA2MGU1NjE5MDJkNGMxOGY4MWVlMmYzN2NjNWJlN2Q2NTQ2
NjdkZWVmLi45YTk4NTJjMjQyMjA4MjdiN2VhMGVlNzRkZWZhNDM0NWM4ODEwZWViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaApAQCAtNzcsOCArNzcsOCBAQCBj
bGFzcyBJbnN0YW5jZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbnN0YW5jZT4sIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxJbgogICAgIFRhYmxlKiB0YWJsZSh1bnNpZ25lZCk7CiAgICAg
dm9pZCBzZXRUYWJsZSh1bnNpZ25lZCwgUmVmPFRhYmxlPiYmKTsKIAotICAgIHZvaWQqIGNhY2hl
ZE1lbW9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkTWVtb3J5LmdldE1heUJlTnVsbChjYWNo
ZWRNZW1vcnlTaXplKCkpOyB9Ci0gICAgc2l6ZV90IGNhY2hlZE1lbW9yeVNpemUoKSBjb25zdCB7
IHJldHVybiBtX2NhY2hlZE1lbW9yeVNpemU7IH0KKyAgICB2b2lkKiBjYWNoZWRNZW1vcnkoKSBj
b25zdCB7IHJldHVybiBtX2NhY2hlZE1lbW9yeS5nZXRNYXlCZU51bGwoY2FjaGVkQm91bmRzQ2hl
Y2tpbmdTaXplKCkpOyB9CisgICAgc2l6ZV90IGNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplOyB9CiAKICAgICB2b2lkIHNl
dE1lbW9yeShSZWY8TWVtb3J5PiYmIG1lbW9yeSkKICAgICB7CkBAIC04OSw4ICs4OSw4IEBAIGNs
YXNzIEluc3RhbmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPiwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPEluCiAgICAgdm9pZCB1cGRhdGVDYWNoZWRNZW1vcnkoKQogICAg
IHsKICAgICAgICAgaWYgKG1fbWVtb3J5ICE9IG51bGxwdHIpIHsKLSAgICAgICAgICAgIG1fY2Fj
aGVkTWVtb3J5ID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQ
dHI+KG1lbW9yeSgpLT5tZW1vcnkoKSwgbWVtb3J5KCktPnNpemUoKSk7Ci0gICAgICAgICAgICBt
X2NhY2hlZE1lbW9yeVNpemUgPSBtZW1vcnkoKS0+c2l6ZSgpOworICAgICAgICAgICAgbV9jYWNo
ZWRNZW1vcnkgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0
cj4obWVtb3J5KCktPm1lbW9yeSgpLCBtZW1vcnkoKS0+Ym91bmRzQ2hlY2tpbmdTaXplKCkpOwor
ICAgICAgICAgICAgbV9jYWNoZWRCb3VuZHNDaGVja2luZ1NpemUgPSBtZW1vcnkoKS0+Ym91bmRz
Q2hlY2tpbmdTaXplKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCBj
bGFzcyBJbnN0YW5jZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbnN0YW5jZT4sIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxJbgogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNZW1v
cnkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fbWVtb3J5KTsgfQogICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZHbG9iYWxzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKEluc3RhbmNlLCBtX2dsb2JhbHMpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
ZkNhY2hlZE1lbW9yeSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5jZSwgbV9jYWNo
ZWRNZW1vcnkpOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNhY2hlZE1lbW9yeVNp
emUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fY2FjaGVkTWVtb3J5U2l6
ZSk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdT
aXplKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX2NhY2hlZEJvdW5kc0No
ZWNraW5nU2l6ZSk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUG9pbnRlclRvVG9w
RW50cnlGcmFtZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5jZSwgbV9wb2ludGVy
VG9Ub3BFbnRyeUZyYW1lKTsgfQogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlBvaW50
ZXJUb0FjdHVhbFN0YWNrTGltaXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2Us
IG1fcG9pbnRlclRvQWN0dWFsU3RhY2tMaW1pdCk7IH0KQEAgLTIwMSw3ICsyMDEsNyBAQCBjbGFz
cyBJbnN0YW5jZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbnN0YW5jZT4sIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxJbgogICAgIHZvaWQqIG1fb3duZXIgeyBudWxscHRyIH07IC8vIElu
IGEgSlMgZW1iZWRkaW5nLCB0aGlzIGlzIGEgSlNXZWJBc3NlbWJseUluc3RhbmNlKi4KICAgICBD
b250ZXh0KiBtX2NvbnRleHQgeyBudWxscHRyIH07CiAgICAgQ2FnZWRQdHI8R2lnYWNhZ2U6OlBy
aW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+IG1fY2FjaGVkTWVtb3J5OwotICAgIHNpemVfdCBt
X2NhY2hlZE1lbW9yeVNpemUgeyAwIH07CisgICAgc2l6ZV90IG1fY2FjaGVkQm91bmRzQ2hlY2tp
bmdTaXplIHsgMCB9OwogICAgIFJlZjxNb2R1bGU+IG1fbW9kdWxlOwogICAgIFJlZlB0cjxDb2Rl
QmxvY2s+IG1fY29kZUJsb2NrOwogICAgIFJlZlB0cjxNZW1vcnk+IG1fbWVtb3J5OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcAppbmRleCBhMjZlODFkNzEyNGYzMGFl
MTNkODJiNzRjYjFkNDMwNmEzNGUyNWIyLi4zMDA0MjQ2ZTU5YWY3YmY2NTY3MThjMTAzNDE4YTVi
YmU1OTIzNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVt
b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcApA
QCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0
Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+CisjaW5jbHVkZSA8d3Rm
L1N0ZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2luY2x1ZGUgPGNzdHJpbmc+
CkBAIC0xMzMsMTYgKzEzNCw1NSBAQCBjbGFzcyBNZW1vcnlNYW5hZ2VyIHsKICAgICAgICAgCiAg
ICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmxvZ1dlYkFzc2VtYmx5TWVtb3J5KCksICJGcmVl
ZCB2aXJ0dWFsOyBzdGF0ZTogIiwgKnRoaXMpOwogICAgIH0KLSAgICAKLSAgICBib29sIGlzQWRk
cmVzc0luRmFzdE1lbW9yeSh2b2lkKiBhZGRyZXNzKQorCisgICAgTWVtb3J5UmVzdWx0IHRyeUFs
bG9jYXRlR3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9yeShzaXplX3QgbWFwcGVkQ2FwYWNpdHkp
CisgICAgeworICAgICAgICBNZW1vcnlSZXN1bHQgcmVzdWx0ID0gWyZdIHsKKyAgICAgICAgICAg
IGF1dG8gaG9sZGVyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgICAgIHZvaWQqIHJlc3Vs
dCA9IEdpZ2FjYWdlOjp0cnlBbGxvY2F0ZVplcm9lZFZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6UHJp
bWl0aXZlLCBtYXBwZWRDYXBhY2l0eSk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gTWVtb3J5UmVzdWx0KG51bGxwdHIsIE1lbW9yeVJlc3VsdDo6U3lu
Y1RyeVRvUmVjbGFpbU1lbW9yeSk7CisKKyAgICAgICAgICAgIG1fZ3Jvd2FibGVCb3VuZHNDaGVj
a2luZ01lbW9yaWVzLmluc2VydChzdGQ6Om1ha2VfcGFpcihiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PihyZXN1bHQpLCBtYXBwZWRDYXBhY2l0eSkpOworCisgICAgICAgICAgICByZXR1cm4gTWVtb3J5
UmVzdWx0KHJlc3VsdCwgTWVtb3J5UmVzdWx0OjpTdWNjZXNzKTsKKyAgICAgICAgfSgpOworCisg
ICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmxvZ1dlYkFzc2VtYmx5TWVtb3J5KCksICJBbGxv
Y2F0ZWQgdmlydHVhbDogIiwgcmVzdWx0LCAiOyBzdGF0ZTogIiwgKnRoaXMpOworCisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdm9pZCBmcmVlR3Jvd2FibGVCb3VuZHNDaGVj
a2luZ01lbW9yeSh2b2lkKiBiYXNlUHRyLCBzaXplX3QgbWFwcGVkQ2FwYWNpdHkpCisgICAgewor
ICAgICAgICB7CisgICAgICAgICAgICBhdXRvIGhvbGRlciA9IGhvbGRMb2NrKG1fbG9jayk7Cisg
ICAgICAgICAgICBHaWdhY2FnZTo6ZnJlZVZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6UHJpbWl0aXZl
LCBiYXNlUHRyLCBtYXBwZWRDYXBhY2l0eSk7CisgICAgICAgICAgICBtX2dyb3dhYmxlQm91bmRz
Q2hlY2tpbmdNZW1vcmllcy5lcmFzZShzdGQ6Om1ha2VfcGFpcihiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihiYXNlUHRyKSwgbWFwcGVkQ2FwYWNpdHkpKTsKKyAgICAgICAgfQorCisgICAgICAgIGRh
dGFMb2dMbklmKE9wdGlvbnM6OmxvZ1dlYkFzc2VtYmx5TWVtb3J5KCksICJGcmVlZCB2aXJ0dWFs
OyBzdGF0ZTogIiwgKnRoaXMpOworICAgIH0KKworICAgIGJvb2wgaXNBZGRyZXNzSW5Hcm93YWJs
ZU1lbW9yeSh2b2lkKiBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgLy8gTk9URTogVGhpcyBjYW4g
YmUgY2FsbGVkIGZyb20gYSBzaWduYWwgaGFuZGxlciwgYnV0IG9ubHkgYWZ0ZXIgd2UgcHJvdmVk
IHRoYXQgd2UncmUgaW4gSklUIGNvZGUuCisgICAgICAgIC8vIE5PVEU6IFRoaXMgY2FuIGJlIGNh
bGxlZCBmcm9tIGEgc2lnbmFsIGhhbmRsZXIsIGJ1dCBvbmx5IGFmdGVyIHdlIHByb3ZlZCB0aGF0
IHdlJ3JlIGluIEpJVCBjb2RlIG9yIFdhc21MTEludCBjb2RlLgogICAgICAgICBhdXRvIGhvbGRl
ciA9IGhvbGRMb2NrKG1fbG9jayk7CiAgICAgICAgIGZvciAodm9pZCogbWVtb3J5IDogbV9mYXN0
TWVtb3JpZXMpIHsKICAgICAgICAgICAgIGNoYXIqIHN0YXJ0ID0gc3RhdGljX2Nhc3Q8Y2hhcio+
KG1lbW9yeSk7CiAgICAgICAgICAgICBpZiAoc3RhcnQgPD0gYWRkcmVzcyAmJiBhZGRyZXNzIDw9
IHN0YXJ0ICsgTWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQorICAgICAgICB1aW50cHRyX3QgYWRkcmVzc1ZhbHVlID0gYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4oYWRkcmVzcyk7CisgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBz
dGQ6OnVwcGVyX2JvdW5kKG1fZ3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9yaWVzLmJlZ2luKCks
IG1fZ3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9yaWVzLmVuZCgpLCBzdGQ6Om1ha2VfcGFpcihh
ZGRyZXNzVmFsdWUsIDApLAorICAgICAgICAgICAgW10oc3RkOjpwYWlyPHVpbnRwdHJfdCwgc2l6
ZV90PiBhLCBzdGQ6OnBhaXI8dWludHB0cl90LCBzaXplX3Q+IGIpIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gKGEuZmlyc3QgKyBhLnNlY29uZCkgPCAoYi5maXJzdCArIGIuc2Vjb25kKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbV9ncm93YWJsZUJvdW5kc0No
ZWNraW5nTWVtb3JpZXMuZW5kKCkpIHsKKyAgICAgICAgICAgIC8vIFNpbmNlIHdlIG5ldmVyIGhh
dmUgb3ZlcmxhcHBlZCByYW5nZSBpbiBtX2dyb3dhYmxlQm91bmRzQ2hlY2tpbmdNZW1vcmllcywg
anVzdCBjaGVja2luZyBvbmUgbG93ZXItYm91bmQgcmFuZ2UgaXMgZW5vdWdoLgorICAgICAgICAg
ICAgaWYgKGl0ZXJhdG9yLT5maXJzdCA8PSBhZGRyZXNzVmFsdWUgJiYgYWRkcmVzc1ZhbHVlIDwg
KGl0ZXJhdG9yLT5maXJzdCArIGl0ZXJhdG9yLT5zZWNvbmQpKQorICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTE5Miw2ICsyMzIsNyBAQCBjbGFzcyBNZW1vcnlNYW5hZ2VyIHsKICAgICBMb2NrIG1fbG9jazsK
ICAgICB1bnNpZ25lZCBtX21heEZhc3RNZW1vcnlDb3VudCB7IDAgfTsKICAgICBWZWN0b3I8dm9p
ZCo+IG1fZmFzdE1lbW9yaWVzOworICAgIFN0ZFNldDxzdGQ6OnBhaXI8dWludHB0cl90LCBzaXpl
X3Q+PiBtX2dyb3dhYmxlQm91bmRzQ2hlY2tpbmdNZW1vcmllczsKICAgICBzaXplX3QgbV9waHlz
aWNhbEJ5dGVzIHsgMCB9OwogfTsKIApAQCAtMjM1LDMwICsyNzYsNjkgQEAgYm9vbCB0cnlBbGxv
Y2F0ZShjb25zdCBGdW5jJiBhbGxvY2F0ZSwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKE1lbW9y
eTo6Tm90aWZ5UHIKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKKworTWVtb3J5SGFuZGxl
OjpNZW1vcnlIYW5kbGUodm9pZCogbWVtb3J5LCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG1hcHBlZENh
cGFjaXR5LCBQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIE1lbW9yeVNoYXJp
bmdNb2RlIHNoYXJpbmdNb2RlLCBNZW1vcnlNb2RlIG1vZGUpCisgICAgOiBtX21lbW9yeShtZW1v
cnksIG1hcHBlZENhcGFjaXR5KQorICAgICwgbV9zaXplKHNpemUpCisgICAgLCBtX21hcHBlZENh
cGFjaXR5KG1hcHBlZENhcGFjaXR5KQorICAgICwgbV9pbml0aWFsKGluaXRpYWwpCisgICAgLCBt
X21heGltdW0obWF4aW11bSkKKyAgICAsIG1fc2hhcmluZ01vZGUoc2hhcmluZ01vZGUpCisgICAg
LCBtX21vZGUobW9kZSkKK3sKK30KKworTWVtb3J5SGFuZGxlOjp+TWVtb3J5SGFuZGxlKCkKK3sK
KyAgICBpZiAobV9tZW1vcnkpIHsKKyAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVQaHlzaWNh
bEJ5dGVzKG1fc2l6ZSk7CisgICAgICAgIHN3aXRjaCAobV9tb2RlKSB7CisgICAgICAgIGNhc2Ug
TWVtb3J5TW9kZTo6U2lnbmFsaW5nOgorICAgICAgICAgICAgaWYgKG1wcm90ZWN0KG1lbW9yeSgp
LCBNZW1vcnk6OmZhc3RNYXBwZWRCeXRlcygpLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKSkgewor
ICAgICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJy
bm8pLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVGYXN0TWVt
b3J5KG1lbW9yeSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1lbW9yeU1v
ZGU6OkJvdW5kc0NoZWNraW5nOiB7CisgICAgICAgICAgICBzd2l0Y2ggKG1fc2hhcmluZ01vZGUp
IHsKKyAgICAgICAgICAgIGNhc2UgTWVtb3J5U2hhcmluZ01vZGU6OkRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgR2lnYWNhZ2U6OmZyZWVWaXJ0dWFsUGFnZXMoR2lnYWNhZ2U6OlByaW1pdGl2ZSwg
bWVtb3J5KCksIG1fc2l6ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIE1lbW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQ6IHsKKyAgICAgICAgICAgICAgICBpZiAobXBy
b3RlY3QobWVtb3J5KCksIG1fbWFwcGVkQ2FwYWNpdHksIFBST1RfUkVBRCB8IFBST1RfV1JJVEUp
KSB7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3Ry
ZXJyb3IoZXJybm8pLCAiXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbWVtb3J5
TWFuYWdlcigpLmZyZWVHcm93YWJsZUJvdW5kc0NoZWNraW5nTWVtb3J5KG1lbW9yeSgpLCBtX21h
cHBlZENhcGFjaXR5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9Cit9CisKIE1lbW9yeTo6TWVtb3J5KCkKKyAgICA6IG1faGFuZGxlKGFkb3B0UmVmKCpuZXcg
TWVtb3J5SGFuZGxlKG51bGxwdHIsIDAsIDAsIFBhZ2VDb3VudCgwKSwgUGFnZUNvdW50KDApLCBN
ZW1vcnlTaGFyaW5nTW9kZTo6RGVmYXVsdCwgTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKSkK
IHsKIH0KIAotTWVtb3J5OjpNZW1vcnkoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhp
bXVtLCBGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3Vy
ZSwgRnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVt
b3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50
KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKQotICAgIDogbV9pbml0aWFsKGluaXRpYWwpCi0gICAg
LCBtX21heGltdW0obWF4aW11bSkKK01lbW9yeTo6TWVtb3J5KFBhZ2VDb3VudCBpbml0aWFsLCBQ
YWdlQ291bnQgbWF4aW11bSwgTWVtb3J5U2hhcmluZ01vZGUgc2hhcmluZ01vZGUsIEZ1bmN0aW9u
PHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBGdW5jdGlvbjx2
b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdURjo6RnVu
Y3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNj
ZXNzQ2FsbGJhY2spCisgICAgOiBtX2hhbmRsZShhZG9wdFJlZigqbmV3IE1lbW9yeUhhbmRsZShu
dWxscHRyLCAwLCAwLCBpbml0aWFsLCBtYXhpbXVtLCBzaGFyaW5nTW9kZSwgTWVtb3J5TW9kZTo6
Qm91bmRzQ2hlY2tpbmcpKSkKICAgICAsIG1fbm90aWZ5TWVtb3J5UHJlc3N1cmUoV1RGTW92ZShu
b3RpZnlNZW1vcnlQcmVzc3VyZSkpCiAgICAgLCBtX3N5bmNUcnlUb1JlY2xhaW1NZW1vcnkoV1RG
TW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSkKICAgICAsIG1fZ3Jvd1N1Y2Nlc3NDYWxsYmFj
ayhXVEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJhY2spKQogewogICAgIEFTU0VSVCghaW5pdGlhbC5i
eXRlcygpKTsKLSAgICBBU1NFUlQobV9tb2RlID09IE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5n
KTsKKyAgICBBU1NFUlQobW9kZSgpID09IE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKTsKICAg
ICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiTWVtb3J5OjpNZW1vcnkgYWxsb2NhdGluZyAiLCAqdGhp
cyk7CiAgICAgQVNTRVJUKCFtZW1vcnkoKSk7CiB9CiAKLU1lbW9yeTo6TWVtb3J5KHZvaWQqIG1l
bW9yeSwgUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBzaXplX3QgbWFwcGVk
Q2FwYWNpdHksIE1lbW9yeU1vZGUgbW9kZSwgRnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+
JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIEZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+
JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNz
LCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykKLSAgICA6IG1f
bWVtb3J5KG1lbW9yeSwgaW5pdGlhbC5ieXRlcygpKQotICAgICwgbV9zaXplKGluaXRpYWwuYnl0
ZXMoKSkKLSAgICAsIG1faW5pdGlhbChpbml0aWFsKQotICAgICwgbV9tYXhpbXVtKG1heGltdW0p
Ci0gICAgLCBtX21hcHBlZENhcGFjaXR5KG1hcHBlZENhcGFjaXR5KQotICAgICwgbV9tb2RlKG1v
ZGUpCitNZW1vcnk6Ok1lbW9yeShSZWY8TWVtb3J5SGFuZGxlPiYmIGhhbmRsZSwgRnVuY3Rpb248
dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIEZ1bmN0aW9uPHZv
aWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5j
dGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nl
c3NDYWxsYmFjaykKKyAgICA6IG1faGFuZGxlKFdURk1vdmUoaGFuZGxlKSkKICAgICAsIG1fbm90
aWZ5TWVtb3J5UHJlc3N1cmUoV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSkpCiAgICAgLCBt
X3N5bmNUcnlUb1JlY2xhaW1NZW1vcnkoV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSkK
ICAgICAsIG1fZ3Jvd1N1Y2Nlc3NDYWxsYmFjayhXVEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJhY2sp
KQpAQCAtMjcxLDcgKzM1MSwxMiBAQCBSZWY8TWVtb3J5PiBNZW1vcnk6OmNyZWF0ZSgpCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVtb3J5KCkpOwogfQogCi1SZWZQdHI8TWVtb3J5PiBNZW1v
cnk6OnRyeUNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIFdURjo6
RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdU
Rjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVt
b3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50
KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKQorUmVmPE1lbW9yeT4gTWVtb3J5OjpjcmVhdGUoUmVm
PE1lbW9yeUhhbmRsZT4mJiBoYW5kbGUsIFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3Vy
ZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9S
ZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jv
d1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lbW9yeShXVEZNb3ZlKGhhbmRsZSksIFdURk1v
dmUobm90aWZ5TWVtb3J5UHJlc3N1cmUpLCBXVEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkp
LCBXVEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJhY2spKSk7Cit9CisKK1JlZlB0cjxNZW1vcnk+IE1l
bW9yeTo6dHJ5Q3JlYXRlKFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgTWVt
b3J5U2hhcmluZ01vZGUgc2hhcmluZ01vZGUsIFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVz
c3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5
VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQo
R3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNr
KQogewogICAgIEFTU0VSVChpbml0aWFsKTsKICAgICBSRUxFQVNFX0FTU0VSVCghbWF4aW11bSB8
fCBtYXhpbXVtID49IGluaXRpYWwpOyAvLyBUaGlzIHNob3VsZCBiZSBndWFyYW50ZWVkIGJ5IG91
ciBjYWxsZXIuCkBAIC0yODUsNyArMzcwLDcgQEAgUmVmUHRyPE1lbW9yeT4gTWVtb3J5Ojp0cnlD
cmVhdGUoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBXVEY6OkZ1bmMKICAg
ICBpZiAobWF4aW11bSAmJiAhbWF4aW11bUJ5dGVzKSB7CiAgICAgICAgIC8vIFVzZXIgc3BlY2lm
aWVkIGEgemVybyBtYXhpbXVtLCBpbml0aWFsIHNpemUgbXVzdCBhbHNvIGJlIHplcm8uCiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFpbml0aWFsQnl0ZXMpOwotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IE1lbW9yeShpbml0aWFsLCBtYXhpbXVtLCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNz
dXJlKSwgV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92ZShncm93U3VjY2Vz
c0NhbGxiYWNrKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lbW9yeShpbml0aWFs
LCBtYXhpbXVtLCBzaGFyaW5nTW9kZSwgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdU
Rk1vdmUoc3luY1RyeVRvUmVjbGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFj
aykpKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBkb25lID0gdHJ5QWxsb2NhdGUoCkBAIC0zMDYs
NDggKzM5MSw1NiBAQCBSZWZQdHI8TWVtb3J5PiBNZW1vcnk6OnRyeUNyZWF0ZShQYWdlQ291bnQg
aW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIFdURjo6RnVuYwogICAgIH0KICAgICAKICAgICBp
ZiAoZmFzdE1lbW9yeSkgewotICAgICAgICAKICAgICAgICAgaWYgKG1wcm90ZWN0KGZhc3RNZW1v
cnkgKyBpbml0aWFsQnl0ZXMsIE1lbW9yeTo6ZmFzdE1hcHBlZEJ5dGVzKCkgLSBpbml0aWFsQnl0
ZXMsIFBST1RfTk9ORSkpIHsKICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDog
Iiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1l
bW9yeShmYXN0TWVtb3J5LCBpbml0aWFsLCBtYXhpbXVtLCBNZW1vcnk6OmZhc3RNYXBwZWRCeXRl
cygpLCBNZW1vcnlNb2RlOjpTaWduYWxpbmcsIFdURk1vdmUobm90aWZ5TWVtb3J5UHJlc3N1cmUp
LCBXVEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpLCBXVEZNb3ZlKGdyb3dTdWNjZXNzQ2Fs
bGJhY2spKSk7CisgICAgICAgIHJldHVybiBNZW1vcnk6OmNyZWF0ZShhZG9wdFJlZigqbmV3IE1l
bW9yeUhhbmRsZShmYXN0TWVtb3J5LCBpbml0aWFsQnl0ZXMsIE1lbW9yeTo6ZmFzdE1hcHBlZEJ5
dGVzKCksIGluaXRpYWwsIG1heGltdW0sIHNoYXJpbmdNb2RlLCBNZW1vcnlNb2RlOjpTaWduYWxp
bmcpKSwgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1vdmUoc3luY1RyeVRvUmVj
bGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykpOwogICAgIH0KICAgICAK
ICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6Y3Jhc2hJZldlYkFzc2VtYmx5Q2FudEZhc3RNZW1v
cnkoKSkpCiAgICAgICAgIHdlYkFzc2VtYmx5Q291bGRudEdldEZhc3RNZW1vcnkoKTsKIAogICAg
IGlmICghaW5pdGlhbEJ5dGVzKQotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lbW9yeShp
bml0aWFsLCBtYXhpbXVtLCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJlKSwgV1RGTW92ZShz
eW5jVHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92ZShncm93U3VjY2Vzc0NhbGxiYWNrKSkpOwot
ICAgIAotICAgIHZvaWQqIHNsb3dNZW1vcnkgPSBHaWdhY2FnZTo6dHJ5QWxsb2NhdGVaZXJvZWRW
aXJ0dWFsUGFnZXMoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgaW5pdGlhbEJ5dGVzKTsKLSAgICBpZiAo
IXNsb3dNZW1vcnkpIHsKLSAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVQaHlzaWNhbEJ5dGVz
KGluaXRpYWxCeXRlcyk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE1lbW9yeShpbml0aWFsLCBtYXhpbXVtLCBzaGFyaW5nTW9kZSwgV1RGTW92
ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1vdmUoc3luY1RyeVRvUmVjbGFpbU1lbW9yeSks
IFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykpKTsKKworICAgIHN3aXRjaCAoc2hhcmluZ01v
ZGUpIHsKKyAgICBjYXNlIE1lbW9yeVNoYXJpbmdNb2RlOjpEZWZhdWx0OiB7CisgICAgICAgIHZv
aWQqIHNsb3dNZW1vcnkgPSBHaWdhY2FnZTo6dHJ5QWxsb2NhdGVaZXJvZWRWaXJ0dWFsUGFnZXMo
R2lnYWNhZ2U6OlByaW1pdGl2ZSwgaW5pdGlhbEJ5dGVzKTsKKyAgICAgICAgaWYgKCFzbG93TWVt
b3J5KSB7CisgICAgICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZVBoeXNpY2FsQnl0ZXMoaW5p
dGlhbEJ5dGVzKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBNZW1vcnk6OmNyZWF0ZShhZG9wdFJlZigqbmV3IE1lbW9yeUhhbmRsZShzbG93
TWVtb3J5LCBpbml0aWFsQnl0ZXMsIGluaXRpYWxCeXRlcywgaW5pdGlhbCwgbWF4aW11bSwgc2hh
cmluZ01vZGUsIE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSksIFdURk1vdmUobm90aWZ5TWVt
b3J5UHJlc3N1cmUpLCBXVEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpLCBXVEZNb3ZlKGdy
b3dTdWNjZXNzQ2FsbGJhY2spKTsKICAgICB9Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZW1v
cnkoc2xvd01lbW9yeSwgaW5pdGlhbCwgbWF4aW11bSwgaW5pdGlhbEJ5dGVzLCBNZW1vcnlNb2Rl
OjpCb3VuZHNDaGVja2luZywgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1vdmUo
c3luY1RyeVRvUmVjbGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykpKTsK
LX0KKyAgICBjYXNlIE1lbW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQ6IHsKKyAgICAgICAgY2hhciog
c2xvd01lbW9yeSA9IG51bGxwdHI7CisgICAgICAgIHRyeUFsbG9jYXRlKAorICAgICAgICAgICAg
WyZdICgpIC0+IE1lbW9yeVJlc3VsdDo6S2luZCB7CisgICAgICAgICAgICAgICAgYXV0byByZXN1
bHQgPSBtZW1vcnlNYW5hZ2VyKCkudHJ5QWxsb2NhdGVHcm93YWJsZUJvdW5kc0NoZWNraW5nTWVt
b3J5KG1heGltdW1CeXRlcyk7CisgICAgICAgICAgICAgICAgc2xvd01lbW9yeSA9IGJpdHdpc2Vf
Y2FzdDxjaGFyKj4ocmVzdWx0LmJhc2VQdHIpOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQua2luZDsKKyAgICAgICAgICAgIH0sIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBzeW5jVHJ5VG9S
ZWNsYWltTWVtb3J5KTsKKyAgICAgICAgaWYgKCFzbG93TWVtb3J5KSB7CisgICAgICAgICAgICBt
ZW1vcnlNYW5hZ2VyKCkuZnJlZVBoeXNpY2FsQnl0ZXMoaW5pdGlhbEJ5dGVzKTsKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CiAKLU1lbW9yeTo6fk1lbW9yeSgpCi17Ci0g
ICAgaWYgKG1fbWVtb3J5KSB7Ci0gICAgICAgIG1lbW9yeU1hbmFnZXIoKS5mcmVlUGh5c2ljYWxC
eXRlcyhtX3NpemUpOwotICAgICAgICBzd2l0Y2ggKG1fbW9kZSkgewotICAgICAgICBjYXNlIE1l
bW9yeU1vZGU6OlNpZ25hbGluZzoKLSAgICAgICAgICAgIGlmIChtcHJvdGVjdChtZW1vcnkoKSwg
TWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkpIHsKLSAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHN0cmVycm9yKGVycm5v
KSwgIlxuIik7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1lbW9yeU1hbmFnZXIoKS5mcmVlRmFzdE1lbW9y
eShtZW1vcnkoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNZW1vcnlNb2Rl
OjpCb3VuZHNDaGVja2luZzoKLSAgICAgICAgICAgIEdpZ2FjYWdlOjpmcmVlVmlydHVhbFBhZ2Vz
KEdpZ2FjYWdlOjpQcmltaXRpdmUsIG1lbW9yeSgpLCBtX3NpemUpOwotICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGlmIChtcHJvdGVjdChzbG93TWVtb3J5ICsgaW5pdGlhbEJ5dGVzLCBtYXhp
bXVtQnl0ZXMgLSBpbml0aWFsQnl0ZXMsIFBST1RfTk9ORSkpIHsKKyAgICAgICAgICAgIGRhdGFM
b2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gTWVtb3J5OjpjcmVhdGUoYWRvcHRSZWYoKm5ldyBNZW1vcnlIYW5kbGUoc2xvd01lbW9y
eSwgaW5pdGlhbEJ5dGVzLCBtYXhpbXVtQnl0ZXMsIGluaXRpYWwsIG1heGltdW0sIHNoYXJpbmdN
b2RlLCBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpLCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVBy
ZXNzdXJlKSwgV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92ZShncm93U3Vj
Y2Vzc0NhbGxiYWNrKSk7CiAgICAgfQorICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCitNZW1vcnk6On5NZW1vcnkoKSA9IGRl
ZmF1bHQ7CisKIHNpemVfdCBNZW1vcnk6OmZhc3RNYXBwZWRSZWR6b25lQnl0ZXMoKQogewogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KFBhZ2VDb3VudDo6cGFnZVNpemUpICogT3B0aW9u
czo6d2ViQXNzZW1ibHlGYXN0TWVtb3J5UmVkem9uZVBhZ2VzKCk7CkBAIC0zNTksMTggKzQ1Miw3
NyBAQCBzaXplX3QgTWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKQogICAgIHJldHVybiAoc3RhdGlj
X2Nhc3Q8c2l6ZV90PigxKSA8PCAzMikgKyBmYXN0TWFwcGVkUmVkem9uZUJ5dGVzKCk7CiB9CiAK
LWJvb2wgTWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUZhc3RNZW1vcnkodm9pZCogYWRkcmVzcykK
K2Jvb2wgTWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUdyb3dhYmxlTWVtb3J5KHZvaWQqIGFkZHJl
c3MpCiB7Ci0gICAgcmV0dXJuIG1lbW9yeU1hbmFnZXIoKS5pc0FkZHJlc3NJbkZhc3RNZW1vcnko
YWRkcmVzcyk7CisgICAgcmV0dXJuIG1lbW9yeU1hbmFnZXIoKS5pc0FkZHJlc3NJbkdyb3dhYmxl
TWVtb3J5KGFkZHJlc3MpOwogfQogCi1FeHBlY3RlZDxQYWdlQ291bnQsIE1lbW9yeTo6R3Jvd0Zh
aWxSZWFzb24+IE1lbW9yeTo6Z3JvdyhQYWdlQ291bnQgZGVsdGEpCitFeHBlY3RlZDxQYWdlQ291
bnQsIE1lbW9yeTo6R3Jvd0ZhaWxSZWFzb24+IE1lbW9yeTo6Z3Jvd1NoYXJlZChQYWdlQ291bnQg
ZGVsdGEpCiB7Ci0gICAgY29uc3QgV2FzbTo6UGFnZUNvdW50IG9sZFBhZ2VDb3VudCA9IHNpemVJ
blBhZ2VzKCk7CisgICAgV2FzbTo6UGFnZUNvdW50IG9sZFBhZ2VDb3VudDsKKyAgICBXYXNtOjpQ
YWdlQ291bnQgbmV3UGFnZUNvdW50OworICAgIGF1dG8gcmVzdWx0ID0gKFsmXSgpIC0+IEV4cGVj
dGVkPFBhZ2VDb3VudCwgTWVtb3J5OjpHcm93RmFpbFJlYXNvbj4geworICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1faGFuZGxlLT5sb2NrKCkpOworCisgICAgICAgIG9sZFBhZ2VDb3Vu
dCA9IHNpemVJblBhZ2VzKCk7CisgICAgICAgIG5ld1BhZ2VDb3VudCA9IG9sZFBhZ2VDb3VudCAr
IGRlbHRhOworICAgICAgICBpZiAoIW5ld1BhZ2VDb3VudCB8fCAhbmV3UGFnZUNvdW50LmlzVmFs
aWQoKSkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChHcm93RmFpbFJlYXNvbjo6
SW52YWxpZEdyb3dTaXplKTsKKyAgICAgICAgaWYgKG5ld1BhZ2VDb3VudC5ieXRlcygpID4gTUFY
X0FSUkFZX0JVRkZFUl9TSVpFKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEdy
b3dGYWlsUmVhc29uOjpPdXRPZk1lbW9yeSk7CisKKyAgICAgICAgaWYgKCFkZWx0YS5wYWdlQ291
bnQoKSkKKyAgICAgICAgICAgIHJldHVybiBvbGRQYWdlQ291bnQ7CisKKyAgICAgICAgZGF0YUxv
Z0xuSWYodmVyYm9zZSwgIk1lbW9yeTo6Z3JvdygiLCBkZWx0YSwgIikgdG8gIiwgbmV3UGFnZUNv
dW50LCAiIGZyb20gIiwgKnRoaXMpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChuZXdQYWdlQ291
bnQgPiBQYWdlQ291bnQ6OmZyb21CeXRlcyhzaXplKCkpKTsKKworICAgICAgICBpZiAobWF4aW11
bSgpICYmIG5ld1BhZ2VDb3VudCA+IG1heGltdW0oKSkKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChHcm93RmFpbFJlYXNvbjo6V291bGRFeGNlZWRNYXhpbXVtKTsKKworICAgICAg
ICBzaXplX3QgZGVzaXJlZFNpemUgPSBuZXdQYWdlQ291bnQuYnl0ZXMoKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoZGVzaXJlZFNpemUgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoZGVzaXJlZFNpemUgPiBzaXplKCkpOworCisgICAgICAgIC8vIElm
IHRoZSBtZW1vcnkgaXMgTWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZCwgd2UgYWxyZWFkeSBhbGxv
Y2F0ZWQgZW5vdWdoIHZpcnR1YWwgYWRkcmVzcyBzcGFjZSBldmVuIGlmIHRoZSBtZW1vcnkgaXMg
Ym91bmQtY2hlY2tpbmcgbW9kZS4gV2UgcGVyZm9ybSBtcHJvdGVjdCB0byBleHRlbmQuCisgICAg
ICAgIHNpemVfdCBleHRyYUJ5dGVzID0gZGVzaXJlZFNpemUgLSBzaXplKCk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGV4dHJhQnl0ZXMpOworICAgICAgICBib29sIGFsbG9jYXRpb25TdWNjZXNz
ID0gdHJ5QWxsb2NhdGUoCisgICAgICAgICAgICBbJl0gKCkgLT4gTWVtb3J5UmVzdWx0OjpLaW5k
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3J5TWFuYWdlcigpLnRyeUFsbG9jYXRlUGh5
c2ljYWxCeXRlcyhleHRyYUJ5dGVzKTsKKyAgICAgICAgICAgIH0sIFtdKFdhc206Ok1lbW9yeTo6
Tm90aWZ5UHJlc3N1cmUpIHsgfSwgW10oTWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7IH0pOwor
ICAgICAgICBpZiAoIWFsbG9jYXRpb25TdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpPdXRPZk1lbW9yeSk7CisKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQobWVtb3J5KCkpOworCisgICAgICAgIC8vIFNpZ25hbGluZyBtZW1vcnkgbXVzdCBo
YXZlIGJlZW4gcHJlLWFsbG9jYXRlZCB2aXJ0dWFsbHkuCisgICAgICAgIHVpbnQ4X3QqIHN0YXJ0
QWRkcmVzcyA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtZW1vcnkoKSkgKyBzaXplKCk7CiAKKyAg
ICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1hcmtpbmcgV2ViQXNzZW1ibHkgbWVtb3J5J3Mg
IiwgUmF3UG9pbnRlcihtZW1vcnkoKSksICIgYXMgcmVhZCt3cml0ZSBpbiByYW5nZSBbIiwgUmF3
UG9pbnRlcihzdGFydEFkZHJlc3MpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXJ0QWRkcmVzcyArIGV4
dHJhQnl0ZXMpLCAiKSIpOworICAgICAgICBpZiAobXByb3RlY3Qoc3RhcnRBZGRyZXNzLCBleHRy
YUJ5dGVzLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKSkgeworICAgICAgICAgICAgZGF0YUxvZygi
bXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIFdURjo6
c3RvcmVTdG9yZUZlbmNlKCk7IC8vIEVuc3VyZSBzdG9yaW5nICJzaXplIiBoYXBwZW5zIGFmdGVy
IG1wcm90ZWN0IGlzIGRvbmUuCisgICAgICAgIG1faGFuZGxlLT5ncm93VG9TaXplKGRlc2lyZWRT
aXplKTsKKyAgICAgICAgcmV0dXJuIG9sZFBhZ2VDb3VudDsKKyAgICB9KCkpOworICAgIGlmIChy
ZXN1bHQpCisgICAgICAgIG1fZ3Jvd1N1Y2Nlc3NDYWxsYmFjayhHcm93U3VjY2Vzc1RhZywgb2xk
UGFnZUNvdW50LCBuZXdQYWdlQ291bnQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0V4cGVj
dGVkPFBhZ2VDb3VudCwgTWVtb3J5OjpHcm93RmFpbFJlYXNvbj4gTWVtb3J5Ojpncm93KFBhZ2VD
b3VudCBkZWx0YSkKK3sKICAgICBpZiAoIWRlbHRhLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpJbnZhbGlkRGVsdGEpOwotICAgIAorCisg
ICAgaWYgKHNoYXJpbmdNb2RlKCkgPT0gTWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZCkKKyAgICAg
ICAgcmV0dXJuIGdyb3dTaGFyZWQoZGVsdGEpOworCisgICAgY29uc3QgV2FzbTo6UGFnZUNvdW50
IG9sZFBhZ2VDb3VudCA9IHNpemVJblBhZ2VzKCk7CiAgICAgY29uc3QgV2FzbTo6UGFnZUNvdW50
IG5ld1BhZ2VDb3VudCA9IG9sZFBhZ2VDb3VudCArIGRlbHRhOwogICAgIGlmICghbmV3UGFnZUNv
dW50IHx8ICFuZXdQYWdlQ291bnQuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoR3Jvd0ZhaWxSZWFzb246OkludmFsaWRHcm93U2l6ZSk7CkBAIC0zOTEsNTIgKzU0Myw1
OCBAQCBFeHBlY3RlZDxQYWdlQ291bnQsIE1lbW9yeTo6R3Jvd0ZhaWxSZWFzb24+IE1lbW9yeTo6
Z3JvdyhQYWdlQ291bnQgZGVsdGEpCiAgICAgICAgIHJldHVybiBzdWNjZXNzKCk7CiAKICAgICBk
YXRhTG9nTG5JZih2ZXJib3NlLCAiTWVtb3J5Ojpncm93KCIsIGRlbHRhLCAiKSB0byAiLCBuZXdQ
YWdlQ291bnQsICIgZnJvbSAiLCAqdGhpcyk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobmV3UGFnZUNv
dW50ID4gUGFnZUNvdW50Ojpmcm9tQnl0ZXMobV9zaXplKSk7CisgICAgUkVMRUFTRV9BU1NFUlQo
bmV3UGFnZUNvdW50ID4gUGFnZUNvdW50Ojpmcm9tQnl0ZXMoc2l6ZSgpKSk7CiAKICAgICBpZiAo
bWF4aW11bSgpICYmIG5ld1BhZ2VDb3VudCA+IG1heGltdW0oKSkKICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpXb3VsZEV4Y2VlZE1heGltdW0pOwogCiAgICAg
c2l6ZV90IGRlc2lyZWRTaXplID0gbmV3UGFnZUNvdW50LmJ5dGVzKCk7CiAgICAgUkVMRUFTRV9B
U1NFUlQoZGVzaXJlZFNpemUgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKLSAgICBSRUxFQVNF
X0FTU0VSVChkZXNpcmVkU2l6ZSA+IG1fc2l6ZSk7Ci0gICAgc2l6ZV90IGV4dHJhQnl0ZXMgPSBk
ZXNpcmVkU2l6ZSAtIG1fc2l6ZTsKLSAgICBSRUxFQVNFX0FTU0VSVChleHRyYUJ5dGVzKTsKLSAg
ICBib29sIGFsbG9jYXRpb25TdWNjZXNzID0gdHJ5QWxsb2NhdGUoCi0gICAgICAgIFsmXSAoKSAt
PiBNZW1vcnlSZXN1bHQ6OktpbmQgewotICAgICAgICAgICAgcmV0dXJuIG1lbW9yeU1hbmFnZXIo
KS50cnlBbGxvY2F0ZVBoeXNpY2FsQnl0ZXMoZXh0cmFCeXRlcyk7Ci0gICAgICAgIH0sIG1fbm90
aWZ5TWVtb3J5UHJlc3N1cmUsIG1fc3luY1RyeVRvUmVjbGFpbU1lbW9yeSk7Ci0gICAgaWYgKCFh
bGxvY2F0aW9uU3VjY2VzcykKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEdyb3dGYWls
UmVhc29uOjpPdXRPZk1lbW9yeSk7Ci0KKyAgICBSRUxFQVNFX0FTU0VSVChkZXNpcmVkU2l6ZSA+
IHNpemUoKSk7CiAgICAgc3dpdGNoIChtb2RlKCkpIHsKICAgICBjYXNlIE1lbW9yeU1vZGU6OkJv
dW5kc0NoZWNraW5nOiB7CisgICAgICAgIGJvb2wgYWxsb2NhdGlvblN1Y2Nlc3MgPSB0cnlBbGxv
Y2F0ZSgKKyAgICAgICAgICAgIFsmXSAoKSAtPiBNZW1vcnlSZXN1bHQ6OktpbmQgeworICAgICAg
ICAgICAgICAgIHJldHVybiBtZW1vcnlNYW5hZ2VyKCkudHJ5QWxsb2NhdGVQaHlzaWNhbEJ5dGVz
KGRlc2lyZWRTaXplKTsKKyAgICAgICAgICAgIH0sIG1fbm90aWZ5TWVtb3J5UHJlc3N1cmUsIG1f
c3luY1RyeVRvUmVjbGFpbU1lbW9yeSk7CisgICAgICAgIGlmICghYWxsb2NhdGlvblN1Y2Nlc3Mp
CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoR3Jvd0ZhaWxSZWFzb246Ok91dE9m
TWVtb3J5KTsKKwogICAgICAgICBSRUxFQVNFX0FTU0VSVChtYXhpbXVtKCkuYnl0ZXMoKSAhPSAw
KTsKIAogICAgICAgICB2b2lkKiBuZXdNZW1vcnkgPSBHaWdhY2FnZTo6dHJ5QWxsb2NhdGVaZXJv
ZWRWaXJ0dWFsUGFnZXMoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgZGVzaXJlZFNpemUpOwogICAgICAg
ICBpZiAoIW5ld01lbW9yeSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChHcm93
RmFpbFJlYXNvbjo6T3V0T2ZNZW1vcnkpOwogCi0gICAgICAgIG1lbWNweShuZXdNZW1vcnksIG1l
bW9yeSgpLCBtX3NpemUpOwotICAgICAgICBpZiAobV9tZW1vcnkpCi0gICAgICAgICAgICBHaWdh
Y2FnZTo6ZnJlZVZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBtZW1vcnkoKSwgbV9z
aXplKTsKLSAgICAgICAgbV9tZW1vcnkgPSBDYWdlZE1lbW9yeShuZXdNZW1vcnksIGRlc2lyZWRT
aXplKTsKLSAgICAgICAgbV9tYXBwZWRDYXBhY2l0eSA9IGRlc2lyZWRTaXplOwotICAgICAgICBt
X3NpemUgPSBkZXNpcmVkU2l6ZTsKKyAgICAgICAgbWVtY3B5KG5ld01lbW9yeSwgbWVtb3J5KCks
IHNpemUoKSk7CisgICAgICAgIGF1dG8gbmV3SGFuZGxlID0gYWRvcHRSZWYoKm5ldyBNZW1vcnlI
YW5kbGUobmV3TWVtb3J5LCBkZXNpcmVkU2l6ZSwgZGVzaXJlZFNpemUsIGluaXRpYWwoKSwgbWF4
aW11bSgpLCBzaGFyaW5nTW9kZSgpLCBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpOworICAg
ICAgICBtX2hhbmRsZSA9IFdURk1vdmUobmV3SGFuZGxlKTsKKwogICAgICAgICBBU1NFUlQobWVt
b3J5KCkgPT0gbmV3TWVtb3J5KTsKICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MoKTsKICAgICB9CiAg
ICAgY2FzZSBNZW1vcnlNb2RlOjpTaWduYWxpbmc6IHsKKyAgICAgICAgc2l6ZV90IGV4dHJhQnl0
ZXMgPSBkZXNpcmVkU2l6ZSAtIHNpemUoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXh0cmFC
eXRlcyk7CisgICAgICAgIGJvb2wgYWxsb2NhdGlvblN1Y2Nlc3MgPSB0cnlBbGxvY2F0ZSgKKyAg
ICAgICAgICAgIFsmXSAoKSAtPiBNZW1vcnlSZXN1bHQ6OktpbmQgeworICAgICAgICAgICAgICAg
IHJldHVybiBtZW1vcnlNYW5hZ2VyKCkudHJ5QWxsb2NhdGVQaHlzaWNhbEJ5dGVzKGV4dHJhQnl0
ZXMpOworICAgICAgICAgICAgfSwgbV9ub3RpZnlNZW1vcnlQcmVzc3VyZSwgbV9zeW5jVHJ5VG9S
ZWNsYWltTWVtb3J5KTsKKyAgICAgICAgaWYgKCFhbGxvY2F0aW9uU3VjY2VzcykKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChHcm93RmFpbFJlYXNvbjo6T3V0T2ZNZW1vcnkpOwor
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1lbW9yeSgpKTsKKwogICAgICAgICAvLyBTaWduYWxp
bmcgbWVtb3J5IG11c3QgaGF2ZSBiZWVuIHByZS1hbGxvY2F0ZWQgdmlydHVhbGx5LgotICAgICAg
ICB1aW50OF90KiBzdGFydEFkZHJlc3MgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWVtb3J5KCkp
ICsgbV9zaXplOworICAgICAgICB1aW50OF90KiBzdGFydEFkZHJlc3MgPSBzdGF0aWNfY2FzdDx1
aW50OF90Kj4obWVtb3J5KCkpICsgc2l6ZSgpOwogICAgICAgICAKICAgICAgICAgZGF0YUxvZ0xu
SWYodmVyYm9zZSwgIk1hcmtpbmcgV2ViQXNzZW1ibHkgbWVtb3J5J3MgIiwgUmF3UG9pbnRlciht
ZW1vcnkoKSksICIgYXMgcmVhZCt3cml0ZSBpbiByYW5nZSBbIiwgUmF3UG9pbnRlcihzdGFydEFk
ZHJlc3MpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXJ0QWRkcmVzcyArIGV4dHJhQnl0ZXMpLCAiKSIp
OwogICAgICAgICBpZiAobXByb3RlY3Qoc3RhcnRBZGRyZXNzLCBleHRyYUJ5dGVzLCBQUk9UX1JF
QUQgfCBQUk9UX1dSSVRFKSkgewogICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVk
OiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAgICAgICBtX21lbW9yeS5yZWNhZ2UobV9zaXpl
LCBkZXNpcmVkU2l6ZSk7Ci0gICAgICAgIG1fc2l6ZSA9IGRlc2lyZWRTaXplOworCisgICAgICAg
IG1faGFuZGxlLT5ncm93VG9TaXplKGRlc2lyZWRTaXplKTsKICAgICAgICAgcmV0dXJuIHN1Y2Nl
c3MoKTsKICAgICB9CiAgICAgfQpAQCAtNDU5LDcgKzYxNyw4IEBAIHZvaWQgTWVtb3J5OjpyZWdp
c3Rlckluc3RhbmNlKEluc3RhbmNlKiBpbnN0YW5jZSkKIAogdm9pZCBNZW1vcnk6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBvdXQucHJpbnQoIk1lbW9yeSBhdCAiLCBSYXdQ
b2ludGVyKG1lbW9yeSgpKSwgIiwgc2l6ZSAiLCBtX3NpemUsICJCIGNhcGFjaXR5ICIsIG1fbWFw
cGVkQ2FwYWNpdHksICJCLCBpbml0aWFsICIsIG1faW5pdGlhbCwgIiBtYXhpbXVtICIsIG1fbWF4
aW11bSwgIiBtb2RlICIsIG1ha2VTdHJpbmcobV9tb2RlKSk7CisgICAgYXV0byBoYW5kbGUgPSBt
X2hhbmRsZS5jb3B5UmVmKCk7CisgICAgb3V0LnByaW50KCJNZW1vcnkgYXQgIiwgUmF3UG9pbnRl
cihoYW5kbGUtPm1lbW9yeSgpKSwgIiwgc2l6ZSAiLCBoYW5kbGUtPnNpemUoKSwgIkIgY2FwYWNp
dHkgIiwgaGFuZGxlLT5tYXBwZWRDYXBhY2l0eSgpLCAiQiwgaW5pdGlhbCAiLCBoYW5kbGUtPmlu
aXRpYWwoKSwgIiBtYXhpbXVtICIsIGhhbmRsZS0+bWF4aW11bSgpLCAiIG1vZGUgIiwgbWFrZVN0
cmluZyhoYW5kbGUtPm1vZGUoKSksICIgc2hhcmluZ01vZGUgIiwgbWFrZVN0cmluZyhoYW5kbGUt
PnNoYXJpbmdNb2RlKCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTWVtb3J5LmgKaW5kZXggOTY3MDgzOGYxNzExZjgyZTdiYjRlMTViZjhi
NWRkM2I4NDgyNmI1MS4uMDFlMmQ0NmYwYTQ2NmZlOGY3ZDJmYWU5ZjI4NzcxNGVjZGZjZmQ2MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuaApAQCAtNDQsMzkgKzQ0LDgw
IEBAIGNsYXNzIFByaW50U3RyZWFtOwogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworCiBuYW1lc3BhY2UgV2FzbSB7CiAKIGNsYXNzIEluc3RhbmNlOwog
Ci1jbGFzcyBNZW1vcnkgOiBwdWJsaWMgUmVmQ291bnRlZDxNZW1vcnk+IHsKK2NsYXNzIE1lbW9y
eUhhbmRsZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNZW1vcnlIYW5kbGU+
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZW1vcnlIYW5kbGUpOworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworICAgIGZyaWVuZCBMTEludE9mZnNldHNFeHRyYWN0b3I7CitwdWJs
aWM6CisgICAgTWVtb3J5SGFuZGxlKHZvaWQqLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG1hcHBlZENh
cGFjaXR5LCBQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIE1lbW9yeVNoYXJp
bmdNb2RlLCBNZW1vcnlNb2RlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB+TWVtb3J5SGFuZGxl
KCk7CisKKyAgICB2b2lkKiBtZW1vcnkoKSBjb25zdCB7IEFTU0VSVChtX21lbW9yeS5nZXRNYXlC
ZU51bGwobV9tYXBwZWRDYXBhY2l0eSkgPT0gbV9tZW1vcnkuZ2V0VW5zYWZlKCkpOyByZXR1cm4g
bV9tZW1vcnkuZ2V0TWF5QmVOdWxsKG1fbWFwcGVkQ2FwYWNpdHkpOyB9CisgICAgc2l6ZV90IHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBzaXplX3QgbWFwcGVkQ2FwYWNpdHko
KSBjb25zdCB7IHJldHVybiBtX21hcHBlZENhcGFjaXR5OyB9CisgICAgUGFnZUNvdW50IGluaXRp
YWwoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWw7IH0KKyAgICBQYWdlQ291bnQgbWF4aW11bSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11bTsgfQorICAgIE1lbW9yeVNoYXJpbmdNb2RlIHNoYXJp
bmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyaW5nTW9kZTsgfQorICAgIE1lbW9yeU1vZGUg
bW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZTaXplKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1lbW9yeUhhbmRsZSwgbV9zaXpl
KTsgfQorICAgIExvY2smIGxvY2soKSB7IHJldHVybiBtX2xvY2s7IH0KKworICAgIHZvaWQgZ3Jv
d1RvU2l6ZShzaXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIG1fc2l6ZSA9IHNpemU7CisgICAg
fQorCitwcml2YXRlOgorICAgIHVzaW5nIENhZ2VkTWVtb3J5ID0gQ2FnZWRQdHI8R2lnYWNhZ2U6
OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OworICAgIENhZ2VkTWVtb3J5IG1fbWVtb3J5
OworICAgIHNpemVfdCBtX3NpemUgeyAwIH07CisgICAgc2l6ZV90IG1fbWFwcGVkQ2FwYWNpdHkg
eyAwIH07CisgICAgUGFnZUNvdW50IG1faW5pdGlhbDsKKyAgICBQYWdlQ291bnQgbV9tYXhpbXVt
OworICAgIE1lbW9yeVNoYXJpbmdNb2RlIG1fc2hhcmluZ01vZGUgeyBNZW1vcnlTaGFyaW5nTW9k
ZTo6RGVmYXVsdCB9OworICAgIE1lbW9yeU1vZGUgbV9tb2RlIHsgTWVtb3J5TW9kZTo6Qm91bmRz
Q2hlY2tpbmcgfTsKKyAgICBMb2NrIG1fbG9jazsKK307CisKK2NsYXNzIE1lbW9yeSBmaW5hbCA6
IHB1YmxpYyBSZWZDb3VudGVkPE1lbW9yeT4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1l
bW9yeSk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgZnJpZW5kIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKIHB1YmxpYzoKICAgICB2b2lkIGR1bXAoV1RGOjpQcmludFN0cmVhbSYp
IGNvbnN0OwogCi0gICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEh
bV9tZW1vcnk7IH0KKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4g
ISFtX2hhbmRsZS0+bWVtb3J5KCk7IH0KICAgICAKICAgICBlbnVtIE5vdGlmeVByZXNzdXJlIHsg
Tm90aWZ5UHJlc3N1cmVUYWcgfTsKICAgICBlbnVtIFN5bmNUcnlUb1JlY2xhaW0geyBTeW5jVHJ5
VG9SZWNsYWltVGFnIH07CiAgICAgZW51bSBHcm93U3VjY2VzcyB7IEdyb3dTdWNjZXNzVGFnIH07
CiAKICAgICBzdGF0aWMgUmVmPE1lbW9yeT4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFJlZlB0cjxN
ZW1vcnk+IHRyeUNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIFdU
Rjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUs
IFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWlt
TWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNv
dW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmPE1lbW9yeT4gY3JlYXRlKFJlZjxNZW1vcnlIYW5kbGU+JiYsIFdURjo6RnVuY3Rpb248
dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rp
b248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6
OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93
U3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBzdGF0aWMgUmVmUHRyPE1lbW9yeT4gdHJ5Q3JlYXRlKFBh
Z2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgTWVtb3J5U2hhcmluZ01vZGUsIFdU
Rjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUs
IFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWlt
TWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNv
dW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKTsKIAotICAgIH5NZW1vcnkoKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSB+TWVtb3J5KCk7CiAKICAgICBzdGF0aWMgc2l6ZV90IGZhc3RNYXBwZWRS
ZWR6b25lQnl0ZXMoKTsKICAgICBzdGF0aWMgc2l6ZV90IGZhc3RNYXBwZWRCeXRlcygpOyAvLyBJ
bmNsdWRlcyByZWR6b25lLgotICAgIHN0YXRpYyBib29sIGFkZHJlc3NJc0luQWN0aXZlRmFzdE1l
bW9yeSh2b2lkKik7Ci0KLSAgICB2b2lkKiBtZW1vcnkoKSBjb25zdCB7IEFTU0VSVChtX21lbW9y
eS5nZXRNYXlCZU51bGwoc2l6ZSgpKSA9PSBtX21lbW9yeS5nZXRVbnNhZmUoKSk7IHJldHVybiBt
X21lbW9yeS5nZXRNYXlCZU51bGwoc2l6ZSgpKTsgfQotICAgIHNpemVfdCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9zaXplOyB9Ci0gICAgUGFnZUNvdW50IHNpemVJblBhZ2VzKCkgY29uc3QgeyBy
ZXR1cm4gUGFnZUNvdW50Ojpmcm9tQnl0ZXMobV9zaXplKTsgfQorICAgIHN0YXRpYyBib29sIGFk
ZHJlc3NJc0luQWN0aXZlR3Jvd2FibGVNZW1vcnkodm9pZCopOwogCi0gICAgUGFnZUNvdW50IGlu
aXRpYWwoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWw7IH0KLSAgICBQYWdlQ291bnQgbWF4aW11
bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11bTsgfQorICAgIHZvaWQqIG1lbW9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1faGFuZGxlLT5tZW1vcnkoKTsgfQorICAgIHNpemVfdCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9oYW5kbGUtPnNpemUoKTsgfQorICAgIFBhZ2VDb3VudCBzaXplSW5QYWdlcygp
IGNvbnN0IHsgcmV0dXJuIFBhZ2VDb3VudDo6ZnJvbUJ5dGVzKHNpemUoKSk7IH0KKyAgICBzaXpl
X3QgYm91bmRzQ2hlY2tpbmdTaXplKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUtPm1hcHBlZENh
cGFjaXR5KCk7IH0KKyAgICBQYWdlQ291bnQgaW5pdGlhbCgpIGNvbnN0IHsgcmV0dXJuIG1faGFu
ZGxlLT5pbml0aWFsKCk7IH0KKyAgICBQYWdlQ291bnQgbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJu
IG1faGFuZGxlLT5tYXhpbXVtKCk7IH0KKyAgICBNZW1vcnlIYW5kbGUmIGhhbmRsZSgpIHsgcmV0
dXJuIG1faGFuZGxlLmdldCgpOyB9CiAKLSAgICBNZW1vcnlNb2RlIG1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX21vZGU7IH0KKyAgICBNZW1vcnlTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1faGFuZGxlLT5zaGFyaW5nTW9kZSgpOyB9CisgICAgTWVtb3J5TW9kZSBtb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUtPm1vZGUoKTsgfQogCiAgICAgZW51bSBjbGFzcyBH
cm93RmFpbFJlYXNvbiB7CiAgICAgICAgIEludmFsaWREZWx0YSwKQEAgLTg5LDIxICsxMzAsMTYg
QEAgY2xhc3MgTWVtb3J5IDogcHVibGljIFJlZkNvdW50ZWQ8TWVtb3J5PiB7CiAKICAgICB2b2lk
IGNoZWNrKCkgeyAgQVNTRVJUKCFkZWxldGlvbkhhc0JlZ3VuKCkpOyB9CiAKLSAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mTWVtb3J5KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1lbW9y
eSwgbV9tZW1vcnkpOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNpemUoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoTWVtb3J5LCBtX3NpemUpOyB9CisgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZkhhbmRsZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihNZW1vcnksIG1f
aGFuZGxlKTsgfQogCiBwcml2YXRlOgogICAgIE1lbW9yeSgpOwotICAgIE1lbW9yeSh2b2lkKiBt
ZW1vcnksIFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgc2l6ZV90IG1hcHBl
ZENhcGFjaXR5LCBNZW1vcnlNb2RlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUp
PiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVj
bGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dT
dWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayk7Ci0g
ICAgTWVtb3J5KFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgV1RGOjpGdW5j
dGlvbjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgV1RGOjpG
dW5jdGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnks
IFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYm
IGdyb3dTdWNjZXNzQ2FsbGJhY2spOworICAgIE1lbW9yeShSZWY8TWVtb3J5SGFuZGxlPiYmLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJl
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFp
bU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VD
b3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayk7CisgICAgTWVtb3J5KFBhZ2VDb3VudCBpbml0
aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgTWVtb3J5U2hhcmluZ01vZGUsIFdURjo6RnVuY3Rpb248
dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rp
b248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6
OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93
U3VjY2Vzc0NhbGxiYWNrKTsKIAotICAgIHVzaW5nIENhZ2VkTWVtb3J5ID0gQ2FnZWRQdHI8R2ln
YWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwotICAgIENhZ2VkTWVtb3J5IG1f
bWVtb3J5OwotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAgUGFnZUNvdW50IG1faW5pdGlh
bDsKLSAgICBQYWdlQ291bnQgbV9tYXhpbXVtOwotICAgIHNpemVfdCBtX21hcHBlZENhcGFjaXR5
IHsgMCB9OwotICAgIE1lbW9yeU1vZGUgbV9tb2RlIHsgTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tp
bmcgfTsKKyAgICBFeHBlY3RlZDxQYWdlQ291bnQsIEdyb3dGYWlsUmVhc29uPiBncm93U2hhcmVk
KFBhZ2VDb3VudCk7CisKKyAgICBSZWY8TWVtb3J5SGFuZGxlPiBtX2hhbmRsZTsKICAgICBXVEY6
OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiBtX25vdGlmeU1lbW9yeVByZXNzdXJlOwog
ICAgIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4gbV9zeW5jVHJ5VG9SZWNs
YWltTWVtb3J5OwogICAgIFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50
LCBQYWdlQ291bnQpPiBtX2dyb3dTdWNjZXNzQ2FsbGJhY2s7CkBAIC0xMTksNyArMTU1LDcgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIGNsYXNzIE1lbW9yeSB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIHNpemVfdCBtYXhGYXN0TWVtb3J5Q291bnQoKSB7IHJldHVybiAwOyB9Ci0g
ICAgc3RhdGljIGJvb2wgYWRkcmVzc0lzSW5BY3RpdmVGYXN0TWVtb3J5KHZvaWQqKSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHN0YXRpYyBib29sIGFkZHJlc3NJc0luQWN0aXZlR3Jvd2FibGVNZW1v
cnkodm9pZCopIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
V2FzbQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUlu
Zm9ybWF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZv
cm1hdGlvbi5jcHAKaW5kZXggNmI0YzJkMWZkNzM4NGQ3ZGNhMzAzMThkNzJjMWY1NjExOWY1ZjU2
MC4uZjJjNmZhNTA4OTg4YzBjNDkwODAzNzE4MzIxNjg3MWU4NTQwY2ZlMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCkBA
IC00MiwxOSArNDIsMTkgQEAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBQaW5uZWRSZWdpc3Rl
ckluZm86OmdldCgpCiAgICAgICAgIGlmICghQ29udGV4dDo6dXNlRmFzdFRMUygpKQogICAgICAg
ICAgICAgKytudW1iZXJPZlBpbm5lZFJlZ2lzdGVyczsKICAgICAgICAgR1BSUmVnIGJhc2VNZW1v
cnlQb2ludGVyID0gR1BSSW5mbzo6cmVnQ1MzOwotICAgICAgICBHUFJSZWcgc2l6ZVJlZ2lzdGVy
ID0gR1BSSW5mbzo6cmVnQ1M0OworICAgICAgICBHUFJSZWcgYm91bmRzQ2hlY2tpbmdTaXplUmVn
aXN0ZXIgPSBHUFJJbmZvOjpyZWdDUzQ7CiAgICAgICAgIEdQUlJlZyB3YXNtQ29udGV4dEluc3Rh
bmNlUG9pbnRlciA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIGlmICghQ29udGV4dDo6dXNlRmFz
dFRMUygpKQogICAgICAgICAgICAgd2FzbUNvbnRleHRJbnN0YW5jZVBvaW50ZXIgPSBHUFJJbmZv
OjpyZWdDUzA7CiAKLSAgICAgICAgc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvLmNvbnN0cnVjdChz
aXplUmVnaXN0ZXIsIGJhc2VNZW1vcnlQb2ludGVyLCB3YXNtQ29udGV4dEluc3RhbmNlUG9pbnRl
cik7CisgICAgICAgIHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mby5jb25zdHJ1Y3QoYm91bmRzQ2hl
Y2tpbmdTaXplUmVnaXN0ZXIsIGJhc2VNZW1vcnlQb2ludGVyLCB3YXNtQ29udGV4dEluc3RhbmNl
UG9pbnRlcik7CiAgICAgfSk7CiAKICAgICByZXR1cm4gc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZv
LmdldCgpOwogfQogCi1QaW5uZWRSZWdpc3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyhHUFJS
ZWcgc2l6ZVJlZ2lzdGVyLCBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXIsIEdQUlJlZyB3YXNtQ29u
dGV4dEluc3RhbmNlUG9pbnRlcikKLSAgICA6IHNpemVSZWdpc3RlcihzaXplUmVnaXN0ZXIpCitQ
aW5uZWRSZWdpc3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyhHUFJSZWcgYm91bmRzQ2hlY2tp
bmdTaXplUmVnaXN0ZXIsIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlciwgR1BSUmVnIHdhc21Db250
ZXh0SW5zdGFuY2VQb2ludGVyKQorICAgIDogYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIoYm91
bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIpCiAgICAgLCBiYXNlTWVtb3J5UG9pbnRlcihiYXNlTWVt
b3J5UG9pbnRlcikKICAgICAsIHdhc21Db250ZXh0SW5zdGFuY2VQb2ludGVyKHdhc21Db250ZXh0
SW5zdGFuY2VQb2ludGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTWVtb3J5SW5mb3JtYXRpb24uaAppbmRleCA0YjhlZjhlOGJjN2FjN2VmYzlhNzk5NDk0ZTI2
ODkxZmE4ZGQ2MjlmLi4yM2E4NjUzMGJhZTEwZmRmN2UwZDQyZTM1YWI5MDc3YmI3M2RmNjVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRp
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRp
b24uaApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsK
IAogc3RydWN0IFBpbm5lZFNpemVSZWdpc3RlckluZm8gewotICAgIEdQUlJlZyBzaXplUmVnaXN0
ZXI7CisgICAgR1BSUmVnIGJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyOwogICAgIHVuc2lnbmVk
IHNpemVPZmZzZXQ7CiB9OwogCkBAIC01NiwxMSArNTYsMTEgQEAgY2xhc3MgUGlubmVkUmVnaXN0
ZXJJbmZvIHsKICAgICAgICAgaWYgKHdhc21Db250ZXh0SW5zdGFuY2VQb2ludGVyICE9IEludmFs
aWRHUFJSZWcpCiAgICAgICAgICAgICByZXN1bHQuc2V0KHdhc21Db250ZXh0SW5zdGFuY2VQb2lu
dGVyKTsKICAgICAgICAgaWYgKG1vZGUgIT0gTWVtb3J5TW9kZTo6U2lnbmFsaW5nKQotICAgICAg
ICAgICAgcmVzdWx0LnNldChzaXplUmVnaXN0ZXIpOworICAgICAgICAgICAgcmVzdWx0LnNldChi
b3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogCi0gICAgR1BSUmVnIHNpemVSZWdpc3RlcjsKKyAgICBHUFJSZWcgYm91bmRzQ2hlY2tpbmdT
aXplUmVnaXN0ZXI7CiAgICAgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyOwogICAgIEdQUlJlZyB3
YXNtQ29udGV4dEluc3RhbmNlUG9pbnRlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5TW9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTWVtb3J5TW9kZS5jcHAKaW5kZXggYjFiYzk4NWRkNzZiYmZmYjVkMmJiNWEzZDEw
OGMwNjdhNDczNzcyZC4uOWFkOGY4MGI2YWEyMmJmZjAzMmJkZDQ2ZDE3ODZlZmNkZWYzY2M0MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeU1vZGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlNb2RlLmNwcApAQCAt
NDIsNiArNDIsMTYgQEAgY29uc3QgY2hhciogbWFrZVN0cmluZyhNZW1vcnlNb2RlIG1vZGUpCiAg
ICAgcmV0dXJuICIiOwogfQogCitjb25zdCBjaGFyKiBtYWtlU3RyaW5nKE1lbW9yeVNoYXJpbmdN
b2RlIHNoYXJpbmdNb2RlKQoreworICAgIHN3aXRjaCAoc2hhcmluZ01vZGUpIHsKKyAgICBjYXNl
IE1lbW9yeVNoYXJpbmdNb2RlOjpEZWZhdWx0OiByZXR1cm4gIkRlZmF1bHQiOworICAgIGNhc2Ug
TWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZDogcmV0dXJuICJTaGFyZWQiOworICAgIH0KKyAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAiIjsKK30KKwogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6Oldhc20KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlNb2RlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5TW9kZS5oCmluZGV4IGMwMzg3NDZk
NjFkNDJhOTUzY2NmNGI1ZDBmYjIwNzVlOTI2NTQxZjguLjUxYjIxMzM2Yzg5NDZiZGViODdjZjEz
OTVhZDk5NzUzMTM1MTU4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21NZW1vcnlNb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1l
bW9yeU1vZGUuaApAQCAtNDAsNiArNDAsMTMgQEAgZW51bSBjbGFzcyBNZW1vcnlNb2RlIDogdWlu
dDhfdCB7CiBzdGF0aWMgY29uc3RleHByIHNpemVfdCBOdW1iZXJPZk1lbW9yeU1vZGVzID0gMjsK
IEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IGNoYXIqIG1ha2VTdHJpbmcoTWVtb3J5TW9kZSk7CiAK
K2VudW0gY2xhc3MgTWVtb3J5U2hhcmluZ01vZGUgOiB1aW50OF90IHsKKyAgICBEZWZhdWx0LAor
ICAgIFNoYXJlZCwKK307CisKK0pTX0VYUE9SVF9QUklWQVRFIGNvbnN0IGNoYXIqIG1ha2VTdHJp
bmcoTWVtb3J5U2hhcmluZ01vZGUpOworCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNUb1dhc20uY3BwCmluZGV4IGQ4ZDE1MjE0ZDQwZjBhODVjMzFmMmEyYjI5MmY4MzVkM2Yz
NjlkNjYuLmJlOTQ4NzRhNWE0YjQ1N2QyMzJlZmQ4OGQ3NzlkMWJiM2Q5YjNmZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKQEAgLTIyMSw3ICsyMjEsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRlSlNUb1dhc21XcmFwcGVy
KENDYWxsSGVscGVycyYgaml0LCBjb25zdAogCiAgICAgaWYgKCEhaW5mby5tZW1vcnkpIHsKICAg
ICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVyOwot
ICAgICAgICBHUFJSZWcgc2NyYXRjaE9yU2l6ZSA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpLnBy
b2xvZ3VlU2NyYXRjaEdQUnNbMF07CisgICAgICAgIEdQUlJlZyBzY3JhdGNoT3JCb3VuZHNDaGVj
a2luZ1NpemUgPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5wcm9sb2d1ZVNjcmF0Y2hHUFJzWzBd
OwogCiAgICAgICAgIGlmIChDb250ZXh0Ojp1c2VGYXN0VExTKCkpCiAgICAgICAgICAgICBqaXQu
bG9hZFdhc21Db250ZXh0SW5zdGFuY2UoYmFzZU1lbW9yeSk7CkBAIC0yMjksMTUgKzIyOSwxNSBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRlSlNUb1dhc21XcmFwcGVy
KENDYWxsSGVscGVycyYgaml0LCBjb25zdAogICAgICAgICBHUFJSZWcgY3VycmVudEluc3RhbmNl
R1BSID0gQ29udGV4dDo6dXNlRmFzdFRMUygpID8gYmFzZU1lbW9yeSA6IHdhc21Db250ZXh0SW5z
dGFuY2VHUFI7CiAgICAgICAgIGlmIChpc0FSTTY0RSgpKSB7CiAgICAgICAgICAgICBpZiAobW9k
ZSAhPSBXYXNtOjpNZW1vcnlNb2RlOjpTaWduYWxpbmcpCi0gICAgICAgICAgICAgICAgc2NyYXRj
aE9yU2l6ZSA9IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyOwotICAgICAgICAgICAgaml0LmxvYWRQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGN1cnJlbnRJbnN0YW5jZUdQUiwgV2FzbTo6SW5zdGFu
Y2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSwgc2NyYXRjaE9yU2l6ZSk7CisgICAgICAg
ICAgICAgICAgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplID0gcGlubmVkUmVncy5ib3VuZHND
aGVja2luZ1NpemVSZWdpc3RlcjsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QWRkcmVzcyhjdXJyZW50SW5zdGFuY2VHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNh
Y2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpKSwgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChtb2RlICE9IFdhc206Ok1lbW9yeU1v
ZGU6OlNpZ25hbGluZykKLSAgICAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoY3VycmVudEluc3RhbmNlR1BSLCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNo
ZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlcik7CisgICAgICAgICAgICAg
ICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGN1cnJlbnRJbnN0YW5jZUdQUiwg
V2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkpLCBwaW5u
ZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsKICAgICAgICAgfQogCiAgICAgICAg
IGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjdXJyZW50SW5zdGFuY2VHUFIsIFdh
c206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7Ci0gICAg
ICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5
LCBzY3JhdGNoT3JTaXplLCBzY3JhdGNoT3JTaXplKTsKKyAgICAgICAgaml0LmNhZ2VDb25kaXRp
b25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHNjcmF0Y2hPckJvdW5kc0No
ZWNraW5nU2l6ZSwgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplKTsKICAgICB9CiAKICAgICBD
Q2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC50aHJlYWRTYWZlUGF0Y2hhYmxlTmVhckNhbGwo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UuY3BwCmluZGV4IDY2OTYxYzIzMmE0ZWE0ZTQ3NGY2NzczOTMyMzJjZDFlYTJl
YzRjNTkuLmU0OWZjNjkyNWE5OTVlNWUwYWY1OWJlZjNlNjAyMGZiZDQwM2JhMGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3Rh
bmNlLmNwcApAQCAtMjkxLDcgKzI5MSw3IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNXZWJB
c3NlbWJseUluc3RhbmNlOjp0cnlDcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCoKICAgICAg
ICAgICAgIGF1dG8qIGpzTWVtb3J5ID0gSlNXZWJBc3NlbWJseU1lbW9yeTo6dHJ5Q3JlYXRlKGds
b2JhbE9iamVjdCwgdm0sIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlNZW1vcnlTdHJ1Y3R1cmUo
KSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIp
OwogCi0gICAgICAgICAgICBSZWZQdHI8V2FzbTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1v
cnk6OnRyeUNyZWF0ZShtb2R1bGVJbmZvcm1hdGlvbi5tZW1vcnkuaW5pdGlhbCgpLCBtb2R1bGVJ
bmZvcm1hdGlvbi5tZW1vcnkubWF4aW11bSgpLAorICAgICAgICAgICAgUmVmUHRyPFdhc206Ok1l
bW9yeT4gbWVtb3J5ID0gV2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUobW9kdWxlSW5mb3JtYXRpb24u
bWVtb3J5LmluaXRpYWwoKSwgbW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5Lm1heGltdW0oKSwgV2Fz
bTo6TWVtb3J5U2hhcmluZ01vZGU6OkRlZmF1bHQsCiAgICAgICAgICAgICAgICAgWyZ2bV0gKFdh
c206Ok1lbW9yeTo6Tm90aWZ5UHJlc3N1cmUpIHsgdm0uaGVhcC5jb2xsZWN0QXN5bmMoQ29sbGVj
dGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5
OjpTeW5jVHJ5VG9SZWNsYWltKSB7IHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVjdGlvblNjb3Bl
OjpGdWxsKTsgfSwKICAgICAgICAgICAgICAgICBbJnZtLCBqc01lbW9yeV0gKFdhc206Ok1lbW9y
eTo6R3Jvd1N1Y2Nlc3MsIFdhc206OlBhZ2VDb3VudCBvbGRQYWdlQ291bnQsIFdhc206OlBhZ2VD
b3VudCBuZXdQYWdlQ291bnQpIHsganNNZW1vcnktPmdyb3dTdWNjZXNzQ2FsbGJhY2sodm0sIG9s
ZFBhZ2VDb3VudCwgbmV3UGFnZUNvdW50KTsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCmluZGV4IGRmYjAyNzAzMTYz
MmUwM2JlM2YzOWI1OGY5OGIzNmU4MmY3MjYyM2YuLmY3YWM2NDQ5ODIxYmYxMDdhMTRmNzQ4ZDAx
MmQxZjI5YzdiNzNlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRl
ICJBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKKyNpbmNsdWRlICJP
YmplY3RDb25zdHJ1Y3Rvci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzIsMTcgKzczLDM0
IEBAIEpTV2ViQXNzZW1ibHlNZW1vcnk6OkpTV2ViQXNzZW1ibHlNZW1vcnkoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotSlNBcnJheUJ1ZmZlciogSlNXZWJBc3NlbWJseU1l
bW9yeTo6YnVmZmVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTQXJy
YXlCdWZmZXIqIEpTV2ViQXNzZW1ibHlNZW1vcnk6OmJ1ZmZlcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogewotICAgIGlmIChtX2J1ZmZlcldyYXBwZXIpCi0gICAgICAgIHJldHVybiBt
X2J1ZmZlcldyYXBwZXIuZ2V0KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0
byogd3JhcHBlciA9IG1fYnVmZmVyV3JhcHBlci5nZXQoKTsKKyAgICBpZiAod3JhcHBlcikgewor
ICAgICAgICBpZiAobV9tZW1vcnktPnNoYXJpbmdNb2RlKCkgPT0gV2FzbTo6TWVtb3J5U2hhcmlu
Z01vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAotICAgIC8vIFdl
IGNhbid0IHVzZSBhIHJlZiBoZXJlIHNpbmNlIGl0IGRvZXNuJ3QgaGF2ZSBhIGNvcHkgY29uc3Ry
dWN0b3IuLi4KLSAgICBSZWY8V2FzbTo6TWVtb3J5PiBwcm90ZWN0ZWRNZW1vcnkgPSBtX21lbW9y
eS5nZXQoKTsKLSAgICBhdXRvIGRlc3RydWN0b3IgPSBjcmVhdGVTaGFyZWRUYXNrPHZvaWQodm9p
ZCopPihbcHJvdGVjdGVkTWVtb3J5ID0gV1RGTW92ZShwcm90ZWN0ZWRNZW1vcnkpXSAodm9pZCop
IHsgfSk7CisgICAgICAgIEFTU0VSVChtX21lbW9yeS0+c2hhcmluZ01vZGUoKSA9PSBXYXNtOjpN
ZW1vcnlTaGFyaW5nTW9kZTo6U2hhcmVkKTsKKyAgICAgICAgLy8gSWYgU2hhcmVkQXJyYXlCdWZm
ZXIncyB1bmRlcmx5aW5nIG1lbW9yeSBpcyBub3QgZ3Jvd24sIHdlIGNvbnRpbnVlIHVzaW5nIGNh
Y2hlZCB3cmFwcGVyLgorICAgICAgICBpZiAod3JhcHBlci0+aW1wbCgpLT5ieXRlTGVuZ3RoKCkg
PT0gbWVtb3J5KCkuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgfQor
CisgICAgUmVmPFdhc206Ok1lbW9yeUhhbmRsZT4gcHJvdGVjdGVkSGFuZGxlID0gbV9tZW1vcnkt
PmhhbmRsZSgpOworICAgIGF1dG8gZGVzdHJ1Y3RvciA9IGNyZWF0ZVNoYXJlZFRhc2s8dm9pZCh2
b2lkKik+KFtwcm90ZWN0ZWRIYW5kbGUgPSBXVEZNb3ZlKHByb3RlY3RlZEhhbmRsZSldICh2b2lk
KikgeyB9KTsKICAgICBtX2J1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMobWVt
b3J5KCkubWVtb3J5KCksIG1lbW9yeSgpLnNpemUoKSwgV1RGTW92ZShkZXN0cnVjdG9yKSk7CiAg
ICAgbV9idWZmZXItPm1ha2VXYXNtTWVtb3J5KCk7Ci0gICAgbV9idWZmZXJXcmFwcGVyLnNldCh2
bSwgdGhpcywgSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5QnVm
ZmVyU3RydWN0dXJlKEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpLCBtX2J1ZmZlci5n
ZXQoKSkpOworICAgIGlmIChtX21lbW9yeS0+c2hhcmluZ01vZGUoKSA9PSBXYXNtOjpNZW1vcnlT
aGFyaW5nTW9kZTo6U2hhcmVkKQorICAgICAgICBtX2J1ZmZlci0+bWFrZVNoYXJlZCgpOworICAg
IGF1dG8qIGFycmF5QnVmZmVyID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QtPmFycmF5QnVmZmVyU3RydWN0dXJlKG1fYnVmZmVyLT5zaGFyaW5nTW9kZSgpKSwgbV9idWZm
ZXIuZ2V0KCkpOworICAgIGlmIChtX21lbW9yeS0+c2hhcmluZ01vZGUoKSA9PSBXYXNtOjpNZW1v
cnlTaGFyaW5nTW9kZTo6U2hhcmVkKSB7CisgICAgICAgIG9iamVjdENvbnN0cnVjdG9yRnJlZXpl
KGdsb2JhbE9iamVjdCwgYXJyYXlCdWZmZXIpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIG1fYnVmZmVyV3JhcHBlci5zZXQodm0sIHRo
aXMsIGFycmF5QnVmZmVyKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX2J1ZmZlcldyYXBwZXIpOwog
ICAgIHJldHVybiBtX2J1ZmZlcldyYXBwZXIuZ2V0KCk7CiB9CkBAIC0xMTcsNyArMTM1LDggQEAg
dm9pZCBKU1dlYkFzc2VtYmx5TWVtb3J5Ojpncm93U3VjY2Vzc0NhbGxiYWNrKFZNJiB2bSwgV2Fz
bTo6UGFnZUNvdW50IG9sZFBhZ2VDb3UKIHsKICAgICAvLyBXZSBuZWVkIHRvIGNsZWFyIG91dCB0
aGUgb2xkIGFycmF5IGJ1ZmZlciBiZWNhdXNlIGl0IG1pZ2h0IG5vdyBiZSBwb2ludGluZyB0byBz
dGFsZSBtZW1vcnkuCiAgICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyLT5kZXRh
Y2godm0pOworICAgICAgICBpZiAobV9tZW1vcnktPnNoYXJpbmdNb2RlKCkgPT0gV2FzbTo6TWVt
b3J5U2hhcmluZ01vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICBtX2J1ZmZlci0+ZGV0YWNoKHZt
KTsKICAgICAgICAgbV9idWZmZXIgPSBudWxscHRyOwogICAgICAgICBtX2J1ZmZlcldyYXBwZXIu
Y2xlYXIoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5TWVtb3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5TWVtb3J5LmgKaW5kZXggYWI5YzQ3NDZiM2NmYTI1MGQ1MWViY2RmNDJiM2E1
ZmRiOWFiNTU1ZC4uZTQ5NDkwMzY5MmU1OTU0MWNmYTc5MDMzNzZhNDUzMmYwNTYzYTQ0OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9y
eS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1v
cnkuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCi0jaW5j
bHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgogI2lu
Y2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgpAQCAtNDksMTYgKzQ5LDE2IEBAIGNsYXNzIEpTV2ViQXNzZW1ibHlNZW1vcnkg
ZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgICAgIHJldHVybiB2bS53ZWJB
c3NlbWJseU1lbW9yeVNwYWNlPG1vZGU+KCk7CiAgICAgfQogCi0gICAgc3RhdGljIEpTV2ViQXNz
ZW1ibHlNZW1vcnkqIHRyeUNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFZNJiwgU3RydWN0dXJlKik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTV2ViQXNzZW1ibHlNZW1vcnkqIHRyeUNy
ZWF0ZShKU0dsb2JhbE9iamVjdCosIFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAog
ICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAgICB2b2lkIGFkb3B0KFJlZjxXYXNtOjpNZW1v
cnk+JiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRvcHQoUmVmPFdhc206Ok1lbW9y
eT4mJik7CiAgICAgV2FzbTo6TWVtb3J5JiBtZW1vcnkoKSB7IHJldHVybiBtX21lbW9yeS5nZXQo
KTsgfQotICAgIEpTQXJyYXlCdWZmZXIqIGJ1ZmZlcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0Kik7
CisgICAgSlNBcnJheUJ1ZmZlciogYnVmZmVyKEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgV2FzbTo6
UGFnZUNvdW50IGdyb3coVk0mLCBKU0dsb2JhbE9iamVjdCosIHVpbnQzMl90IGRlbHRhKTsKLSAg
ICB2b2lkIGdyb3dTdWNjZXNzQ2FsbGJhY2soVk0mLCBXYXNtOjpQYWdlQ291bnQgb2xkUGFnZUNv
dW50LCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50KTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIGdyb3dTdWNjZXNzQ2FsbGJhY2soVk0mLCBXYXNtOjpQYWdlQ291bnQgb2xkUGFnZUNv
dW50LCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50KTsKIAogcHJpdmF0ZToKICAgICBKU1dl
YkFzc2VtYmx5TWVtb3J5KFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCmluZGV4IDk5Mjc2YzJk
OWU2MjdhZDIxNTNkZGZjYTQ5Yzc3OGUwYzc5YzgzY2EuLjc4ZGE2ZGMzZjRlYWVhZDNjODAwYWU0
MmVjMGU2ODgxNzY1ZTQ2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC0zNTcsMjAgKzM1NywyMCBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gV2ViQXNzZW1ibHlGdW5jdGlvbjo6anND
YWxsRW50cnlwb2ludFNsb3coKQogCiAgICAgaWYgKCEhbW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5
KSB7CiAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9p
bnRlcjsKLSAgICAgICAgR1BSUmVnIHNjcmF0Y2hPclNpemUgPSBzdGFja0xpbWl0R1BSOworICAg
ICAgICBHUFJSZWcgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplID0gc3RhY2tMaW1pdEdQUjsK
ICAgICAgICAgYXV0byBtb2RlID0gaW5zdGFuY2UoKS0+bWVtb3J5TW9kZSgpOwogCiAgICAgICAg
IGlmIChpc0FSTTY0RSgpKSB7CiAgICAgICAgICAgICBpZiAobW9kZSAhPSBXYXNtOjpNZW1vcnlN
b2RlOjpTaWduYWxpbmcpCi0gICAgICAgICAgICAgICAgc2NyYXRjaE9yU2l6ZSA9IHBpbm5lZFJl
Z3Muc2l6ZVJlZ2lzdGVyOwotICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHNjcmF0Y2hHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNp
emUoKSksIHNjcmF0Y2hPclNpemUpOworICAgICAgICAgICAgICAgIHNjcmF0Y2hPckJvdW5kc0No
ZWNraW5nU2l6ZSA9IHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXI7CisgICAg
ICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgV2Fz
bTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkpLCBzY3JhdGNo
T3JCb3VuZHNDaGVja2luZ1NpemUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYg
KG1vZGUgIT0gV2FzbTo6TWVtb3J5TW9kZTo6U2lnbmFsaW5nKQotICAgICAgICAgICAgICAgIGpp
dC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBXYXNtOjpJbnN0YW5j
ZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlcik7
CisgICAgICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0
Y2hHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgp
KSwgcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7CiAgICAgICAgIH0KIAog
ICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgV2Fz
bTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKLSAgICAg
ICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnks
IHNjcmF0Y2hPclNpemUsIHNjcmF0Y2hPclNpemUpOworICAgICAgICBqaXQuY2FnZUNvbmRpdGlv
bmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgc2NyYXRjaE9yQm91bmRzQ2hl
Y2tpbmdTaXplLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOwogICAgIH0KIAogICAgIC8v
IFdlIHVzZSB0aGlzIGNhbGxlZSB0byBpbmRpY2F0ZSBob3cgdG8gdW53aW5kIHBhc3QgdGhlc2Ug
dHlwZXMgb2YgZnJhbWVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcAppbmRleCA1MGNjY2Ey
NDFmZDViZTk3OTU2ZGYwODhiOTRhOGQ4YWIwZmYwZDA1Li4yNTZlYjBmZmMzNGFiNzM1YmM1MzI4
N2M3NWY2YjA3ZWM2YjhmN2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcApAQCAtNTYs
OCArNTYsNiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0SlNXZWJBc3NlbWJs
eU1lbW9yeSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgIT0gMSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJXZWJBc3NlbWJseS5NZW1vcnkg
ZXhwZWN0cyBleGFjdGx5IG9uZSBhcmd1bWVudCJfcykpKTsKIAogICAgIEpTT2JqZWN0KiBtZW1v
cnlEZXNjcmlwdG9yOwogICAgIHsKQEAgLTEwMiwxMCArMTAwLDIzIEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TWVtb3J5LCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBXYXNtOjpNZW1vcnlTaGFyaW5nTW9k
ZSBzaGFyaW5nTW9kZSA9IFdhc206Ok1lbW9yeVNoYXJpbmdNb2RlOjpEZWZhdWx0OworICAgIEpT
VmFsdWUgc2hhcmVkVmFsdWUgPSBtZW1vcnlEZXNjcmlwdG9yLT5nZXQoZ2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2hhcmVkIikpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgYm9vbCBzaGFyZWQgPSBz
aGFyZWRWYWx1ZS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGlmIChzaGFyZWQpIHsKKyAg
ICAgICAgaWYgKCFtYXhpbXVtUGFnZUNvdW50KQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiJ21heGltdW0nIHBhZ2UgY291bnQg
bXVzdCBiZSBkZWZpbmVkIGlmICdzaGFyZWQnIGlzIHRydWUiX3MpOworICAgICAgICBpZiAoIU9w
dGlvbnM6OnVzZVNoYXJlZEFycmF5QnVmZmVyKCkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJTaGFyZWQgV2ViQXNzZW1ibHku
TWVtb3J5IGFuZCBTaGFyZWRBcnJheUJ1ZmZlciBhcmUgbm90IGVuYWJsZWQiX3MpOworICAgICAg
ICBzaGFyaW5nTW9kZSA9IFdhc206Ok1lbW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQ7CisgICAgfQor
CiAgICAgYXV0byoganNNZW1vcnkgPSBKU1dlYkFzc2VtYmx5TWVtb3J5Ojp0cnlDcmVhdGUoZ2xv
YmFsT2JqZWN0LCB2bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseU1lbW9yeVN0cnVjdHVyZSgp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCi0gICAgUmVmUHRyPFdhc206Ok1lbW9yeT4gbWVtb3J5ID0gV2FzbTo6TWVtb3J5Ojp0cnlD
cmVhdGUoaW5pdGlhbFBhZ2VDb3VudCwgbWF4aW11bVBhZ2VDb3VudCwKKyAgICBSZWZQdHI8V2Fz
bTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OnRyeUNyZWF0ZShpbml0aWFsUGFnZUNv
dW50LCBtYXhpbXVtUGFnZUNvdW50LCBzaGFyaW5nTW9kZSwKICAgICAgICAgWyZ2bV0gKFdhc206
Ok1lbW9yeTo6Tm90aWZ5UHJlc3N1cmUpIHsgdm0uaGVhcC5jb2xsZWN0QXN5bmMoQ29sbGVjdGlv
blNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgWyZ2bV0gKFdhc206Ok1lbW9yeTo6U3luY1RyeVRv
UmVjbGFpbSkgeyB2bS5oZWFwLmNvbGxlY3RTeW5jKENvbGxlY3Rpb25TY29wZTo6RnVsbCk7IH0s
CiAgICAgICAgIFsmdm0sIGpzTWVtb3J5XSAoV2FzbTo6TWVtb3J5OjpHcm93U3VjY2VzcywgV2Fz
bTo6UGFnZUNvdW50IG9sZFBhZ2VDb3VudCwgV2FzbTo6UGFnZUNvdW50IG5ld1BhZ2VDb3VudCkg
eyBqc01lbW9yeS0+Z3Jvd1N1Y2Nlc3NDYWxsYmFjayh2bSwgb2xkUGFnZUNvdW50LCBuZXdQYWdl
Q291bnQpOyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcAppbmRleCBhYjRhMmJmZWVlZmE2ODQx
N2MzOGNjMTk1NGU1ZTk3ZjYyZjYwMDliLi43ZTIwOGMzMTAxYzIzNzE2MzIyOWNjNTc5MjdhZWE2
YjhmMGIyNWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCkBAIC05Myw3ICs5Myw3IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0J1ZmZlciwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iCiAKICAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiBtZW1vcnkg
PSBnZXRNZW1vcnkoZ2xvYmFsT2JqZWN0LCB2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7IAog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKG1lbW9yeS0+YnVmZmVyKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2Jq
ZWN0KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShtZW1vcnktPmJ1ZmZlcihnbG9iYWxPYmplY3QpKSk7CiB9CiAKIFdlYkFzc2VtYmx5TWVtb3J5
UHJvdG90eXBlKiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAppbmRl
eCAzMWMyMWUzYzQzNzAyYzk5ZmI2ZjgwOTU0ZDBjNWU0NzdkNzBkZjdkLi45ZGQyZTdiZjUyMTg3
ZmIzNDVlZWYwZTdmNGZhMjYzNDViMmVhNDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCkBAIC01NjYs
OCArNTY2LDkgQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB9OwogCiAgICAgYXV0byBmb3JFYWNoU2Vn
bWVudCA9IFsmXSAoYXV0byBmbikgewotICAgICAgICB1aW50OF90KiBtZW1vcnkgPSByZWludGVy
cHJldF9jYXN0PHVpbnQ4X3QqPihtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmNhY2hlZE1lbW9yeSgp
KTsKLSAgICAgICAgdWludDY0X3Qgc2l6ZUluQnl0ZXMgPSBtX2luc3RhbmNlLT5pbnN0YW5jZSgp
LmNhY2hlZE1lbW9yeVNpemUoKTsKKyAgICAgICAgYXV0byB3YXNtTWVtb3J5ID0gbV9pbnN0YW5j
ZS0+aW5zdGFuY2UoKS5tZW1vcnkoKTsKKyAgICAgICAgdWludDhfdCogbWVtb3J5ID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4od2FzbU1lbW9yeS0+bWVtb3J5KCkpOworICAgICAgICB1aW50
NjRfdCBzaXplSW5CeXRlcyA9IHdhc21NZW1vcnktPnNpemUoKTsKIAogICAgICAgICBmb3IgKGNv
bnN0IFdhc206OlNlZ21lbnQ6OlB0ciYgc2VnbWVudCA6IGRhdGEpIHsKICAgICAgICAgICAgIHVp
bnQzMl90IG9mZnNldCA9IHNlZ21lbnQtPm9mZnNldC5pc0dsb2JhbEltcG9ydCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQppbmRleCBiZWIwMDYwYmFlYTQzOTRhMDUwNGNjZWQyNjdlNjI2MDBhMzk2Yjc2Li4x
MTdkZTNiODMwY2UyOWM3MDM4YWFhNTRmM2E4ZGExZDcyMjdlODM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKQEAgLTE1NTksNiArMTU1OSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hF
QURFUlMKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCiAgICAgd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXJDbGllbnQuaAogICAgIHdvcmtlcnMvV29ya2VyVGhyZWFkLmgKKyAgICB3
b3JrZXJzL1dvcmtlclRocmVhZFR5cGUuaAogICAgIHdvcmtlcnMvV29ya2VyVHlwZS5oCiAKICAg
ICB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFs
aXphdGlvbkNvbnRleHQuY3BwCmluZGV4IDlhYzg4ZWJmZDc3NzhiZDdkMWQzMTJmYzc2MDhmMWVj
OWFhMTFkMzQuLmE2MWNiMDRlNGRiOTU1Nzk1MjU5NDM4NzFhZWZhNDQzNjE1ZTM1YzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lk
IElEQlNlcmlhbGl6YXRpb25Db250ZXh0Ojppbml0aWFsaXplVk0oKQogICAgIEFTU0VSVCghbV9n
bG9iYWxPYmplY3QpOwogICAgIG1fdm0gPSBKU0M6OlZNOjpjcmVhdGUoKTsKICAgICBtX3ZtLT5o
ZWFwLmFjcXVpcmVBY2Nlc3MoKTsKLSAgICBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxk
KG1fdm0uZ2V0KCkpOworICAgIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29ybGQobV92bS5n
ZXQoKSwgV29ya2VyVGhyZWFkVHlwZTo6V29ya2xldCk7CiAKICAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrZXIobV92bS5nZXQoKSk7CiAgICAgbV9nbG9iYWxPYmplY3Quc2V0KCptX3ZtLCBKU0lE
QlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q6OmNyZWF0ZSgqbV92bSwgSlNJREJTZXJpYWxpemF0
aW9uR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIEpTQzo6anNOdWxsKCkpLCBu
b3JtYWxXb3JsZCgqbV92bSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjZTJhYTcwN2FkYWRiNmIzNDdhNDQ0NGE2ZGVlZjJj
ODVkYTczZjQxLi5jMzMyOTgyOTE2ODIzZjdiNjY2MGQxMTYyMWRjYjBhYjQ0MDc0M2VlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC01MDExLDYgKzUwMTEsNyBAQAogCQlFMzk2MjhDMTIzOTU3NDMxMDA2NThFQ0QgLyogTW90aW9u
TWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM5NjI4QzAyMzk1NzQzMDAwNjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGllbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0E3NzY2
NzFEQzg1RDI4MDBCNjkwRDggLyogRE9NSklUSURMQ29udmVydC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNzc2NjUxREM4NUQyMjAwQjY5MEQ4IC8q
IERPTUpJVElETENvbnZlcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFM0E3NzY2ODFEQzg1RDI4MDBCNjkwRDggLyogRE9NSklUSURMVHlwZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNzc2NjYx
REM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFM0FGRDdBRDI1NUY1MEVCMDBFNUUzMEUgLyog
V29ya2VyVGhyZWFkVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTNBRkQ3QUIyNTVGNTBEQzAwRTVFMzBFIC8qIFdvcmtlclRocmVhZFR5cGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0IyRjBF
RDFEN0Y0Q0EzMDBCMEM5RDEgLyogTG9hZGFibGVTY3JpcHQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQjJGMEU3MUQ3RjM1RUMwMEIwQzlEMSAvKiBM
b2FkYWJsZVNjcmlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUUzQjJGMEVFMUQ3RjRDQTkwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdENsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCMkYw
RTgxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlU2NyaXB0Q2xpZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNCMkYwRjAxRDdGNENCNTAw
QjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCMkYwRTQxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRh
YmxlQ2xhc3NpY1NjcmlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0xNjAzOCw2ICsxNjAzOSw3IEBACiAJCUUzQTc3NjY2MURDODVEMjIwMEI2
OTBEOCAvKiBET01KSVRJRExUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERPTUpJVElETFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBRTZDRDEy
MjUyRjI3MDAwQzcwQjUwIC8qIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0FGQTk2NDFEQTZFOTA4MDAyODYxQkQg
LyogSlNOb2RlRE9NSklULmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTTm9kZURPTUpJVC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQUZEN0FC
MjU1RjUwREMwMEU1RTMwRSAvKiBXb3JrZXJUaHJlYWRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdv
cmtlclRocmVhZFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNCMkYwRTMx
RDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0IyRjBFNDFEN0YzNUVDMDBCMEM5RDEgLyogTG9h
ZGFibGVDbGFzc2ljU2NyaXB0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExv
YWRhYmxlQ2xhc3NpY1NjcmlwdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0Iy
RjBFNzFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVTY3JpcHQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTG9hZGFibGVTY3JpcHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE5MDEzLDYgKzE5MDE1LDcgQEAKIAkJCQkyRUE3NjgwMzBGRTcxMjY0MDBBQjlD
OEEgLyogV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmggKi8sCiAJCQkJMkU0MzQ2NDIwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5jcHAgKi8sCiAJCQkJMkU0MzQ2NDMwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlclRocmVhZC5oICovLAorCQkJCUUzQUZEN0FCMjU1RjUwREMwMEU1RTMw
RSAvKiBXb3JrZXJUaHJlYWRUeXBlLmggKi8sCiAJCQkJNTFGMTc0RkMxRjM1ODk4ODAwQzc0OTUw
IC8qIFdvcmtlclR5cGUuaCAqLywKIAkJCQk1MUYxNzRGQTFGMzU4OEQ3MDBDNzQ5NTAgLyogV29y
a2VyVHlwZS5pZGwgKi8sCiAJCQkpOwpAQCAtMzUxMjksNiArMzUxMzIsNyBAQAogCQkJCTJFNDM0
NjU1MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBCOTA1NkY5MEYyNjg1RjMwMDk1RkY2QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5N0FBQkQyRDE0RkEwOUQ1MDA3NDU3QUUgLyogV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzQUZEN0FEMjU1RjUw
RUIwMEU1RTMwRSAvKiBXb3JrZXJUaHJlYWRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRB
MEM2ODFEQjgwN0Q5MDAxN0E5MEIgLyogV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MUYxNzRGRTFGMzU4OTkyMDBDNzQ5NTAgLyogV29ya2VyVHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNEJERUEzMjAyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmtsZXQu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURM
VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKaW5kZXggN2U4NTU5
MDVmOTA5Nzk3N2IzMzVkMzQwNTc2MWQyYWUxNzY3NzYxZi4uYjEwNWEyNGJjNWEwNWRmYmZlZDY2
YTgxNWFjYzMxZTNmOWJmYzEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
SURMVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCkBAIC0x
NTEsNiArMTUxLDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExSZXF1aXJlc0V4
aXN0aW5nQXRvbVN0cmluZ0FkYXB0b3IgOiBJRExTdHJpbmc8QXRvCiAgICAgdXNpbmcgSW5uZXJU
eXBlID0gVDsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExBbGxvd1NoYXJl
ZEFkYXB0b3IgOiBUIHsKKyAgICB1c2luZyBJbm5lclR5cGUgPSBUOworfTsKKwogc3RydWN0IElE
TE9iamVjdCA6IElETFR5cGU8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+IHsKICAgICB1c2lu
ZyBOdWxsYWJsZVR5cGUgPSBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PjsKIApAQCAtMzIzLDQg
KzMyNywxNyBAQCBzdHJ1Y3QgSXNJRExGbG9hdGluZ1BvaW50IDogcHVibGljIHN0ZDo6aW50ZWdy
YWxfY29uc3RhbnQ8Ym9vbCwgV1RGOjpJc0Jhc2VPZlRlbQogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
IHN0cnVjdCBJc0lETFR5cGVkQXJyYXkgOiBwdWJsaWMgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxi
b29sLCBXVEY6OklzQmFzZU9mVGVtcGxhdGU8SURMVHlwZWRBcnJheSwgVD46OnZhbHVlPiB7IH07
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNJRExBcnJheUJ1ZmZlciA6IHB1Ymxp
YyBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHN0ZDo6aXNfYmFzZV9vZjxJRExBcnJheUJ1
ZmZlciwgVD46OnZhbHVlPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNJ
RExBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBz
dGQ6OmlzX2Jhc2Vfb2Y8SURMQXJyYXlCdWZmZXJWaWV3LCBUPjo6dmFsdWU+IHsgfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBJc0lETEFycmF5QnVmZmVyQWxsb3dTaGFyZWQgOiBw
dWJsaWMgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBzdGQ6OmlzX2Jhc2Vfb2Y8SURMQWxs
b3dTaGFyZWRBZGFwdG9yPElETEFycmF5QnVmZmVyPiwgVD46OnZhbHVlPiB7IH07CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNJRExBcnJheUJ1ZmZlclZpZXdBbGxvd1NoYXJlZCA6
IHB1YmxpYyBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHN0ZDo6aXNfYmFzZV9vZjxJRExB
bGxvd1NoYXJlZEFkYXB0b3I8SURMQXJyYXlCdWZmZXJWaWV3PiwgVD46OnZhbHVlPiB7IH07CisK
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvQ29tbW9uVk0uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9u
Vk0uY3BwCmluZGV4IDljZTYzYTBhN2ZjNmExZDYyMzc1OTA1ODk1NTc2MDAyMjQ4MDA4MTQuLmQz
NWJlZDMwZmY0NWRhYmQ2ZDY3MzI0ZDM0YWI0N2ZjM2Y3Y2RkYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9Db21tb25WTS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgSlNDOjpWTSYgY29tbW9u
Vk1TbG93KCkKIAogICAgIHZtLnNldEdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93
KGdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KCkpOwogCi0gICAgSlNWTUNsaWVu
dERhdGE6OmluaXROb3JtYWxXb3JsZCgmdm0pOworICAgIEpTVk1DbGllbnREYXRhOjppbml0Tm9y
bWFsV29ybGQoJnZtLCBXb3JrZXJUaHJlYWRUeXBlOjpNYWluKTsKIAogICAgIHJldHVybiB2bTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydEJ1
ZmZlclNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0QnVm
ZmVyU291cmNlLmgKaW5kZXggODlhNzZiNDVkN2QzZDBkNTJlNTA0YmQ3NTAwZTk4OTE2ZGY0OGFi
NS4uYjZlNDA4MzgzM2QzN2Q0MjBiYjExMGU3MTlhZWFmM2E0MjA3M2M0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0QnVmZmVyU291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0QnVmZmVyU291cmNlLmgK
QEAgLTEwOSw3ICsxMDksOCBAQCBpbmxpbmUgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiB0
b1Vuc2hhcmVkQXJyYXlCdWZmZXJWaWV3KEpTQzo6Vk0mIHZtLCBKU0M6OgogCiBuYW1lc3BhY2Ug
RGV0YWlsIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgQnVmZmVyU291cmNlVHlwZT4KK2VudW0gY2xh
c3MgQnVmZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlIHsgQWxsb3csIERpc2FsbG93
IH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCdWZmZXJTb3VyY2VUeXBlLCBCdWZmZXJTb3VyY2VDb252
ZXJ0ZXJBbGxvd1NoYXJlZE1vZGUgbW9kZT4KIHN0cnVjdCBCdWZmZXJTb3VyY2VDb252ZXJ0ZXIg
ewogICAgIHVzaW5nIFdyYXBwZXJUeXBlID0gdHlwZW5hbWUgQ29udmVydGVyPEJ1ZmZlclNvdXJj
ZVR5cGU+OjpXcmFwcGVyVHlwZTsKICAgICB1c2luZyBSZXR1cm5UeXBlID0gdHlwZW5hbWUgQ29u
dmVydGVyPEJ1ZmZlclNvdXJjZVR5cGU+OjpSZXR1cm5UeXBlOwpAQCAtMTE5LDcgKzEyMCwxMSBA
QCBzdHJ1Y3QgQnVmZmVyU291cmNlQ29udmVydGVyIHsKICAgICB7CiAgICAgICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAgICAgUmV0dXJuVHlwZSBvYmplY3QgPSBX
cmFwcGVyVHlwZTo6dG9XcmFwcGVkKHZtLCB2YWx1ZSk7CisgICAgICAgIFJldHVyblR5cGUgb2Jq
ZWN0IHsgfTsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEJ1ZmZlclNvdXJjZUNvbnZl
cnRlckFsbG93U2hhcmVkTW9kZTo6QWxsb3cpCisgICAgICAgICAgICBvYmplY3QgPSBXcmFwcGVy
VHlwZTo6dG9XcmFwcGVkQWxsb3dTaGFyZWQodm0sIHZhbHVlKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgb2JqZWN0ID0gV3JhcHBlclR5cGU6OnRvV3JhcHBlZCh2bSwgdmFsdWUpOwogICAg
ICAgICBpZiAoVU5MSUtFTFkoIW9iamVjdCkpCiAgICAgICAgICAgICBleGNlcHRpb25UaHJvd2Vy
KGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG9iamVjdDsKQEAg
LTEzNSw3ICsxNDAsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURMQXJyYXlCdWZm
ZXI+IDogRGVmYXVsdENvbnZlcnRlcjxJRExBcnJheUJ1ZmZlcj4gewogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEV4Y2VwdGlvblRocm93ZXIgPSBEZWZhdWx0RXhjZXB0aW9uVGhyb3dlcj4KICAgICBz
dGF0aWMgUmV0dXJuVHlwZSBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlv
blRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkpCiAgICAgewotICAgICAgICByZXR1cm4gRGV0
YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMQXJyYXlCdWZmZXI+Ojpjb252ZXJ0KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhj
ZXB0aW9uVGhyb3dlcikpOworICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252
ZXJ0ZXI8SURMQXJyYXlCdWZmZXIsIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyQWxsb3dT
aGFyZWRNb2RlOjpEaXNhbGxvdz46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUs
IHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7CiAgICAg
fQogfTsKIApAQCAtMTU3LDcgKzE2Miw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJ
RExEYXRhVmlldz4gOiBEZWZhdWx0Q29udmVydGVyPElETERhdGFWaWV3PiB7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgog
ICAgIHN0YXRpYyBSZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhj
ZXB0aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExEYXRhVmlldz46OmNvbnZlcnQobGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihl
eGNlcHRpb25UaHJvd2VyKSk7CisgICAgICAgIHJldHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNv
bnZlcnRlcjxJRExEYXRhVmlldywgRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXJBbGxvd1No
YXJlZE1vZGU6OkRpc2FsbG93Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwg
c3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKICAgICB9
CiB9OwogCkBAIC0xNzksNyArMTg0LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElE
TEludDhBcnJheT4gOiBEZWZhdWx0Q29udmVydGVyPElETEludDhBcnJheT4gewogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEV4Y2VwdGlvblRocm93ZXIgPSBEZWZhdWx0RXhjZXB0aW9uVGhyb3dlcj4K
ICAgICBzdGF0aWMgUmV0dXJuVHlwZSBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9uVGhyb3dlciYmIGV4
Y2VwdGlvblRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkpCiAgICAgewotICAgICAgICByZXR1
cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMSW50OEFycmF5Pjo6Y29udmVydChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+
KGV4Y2VwdGlvblRocm93ZXIpKTsKKyAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNl
Q29udmVydGVyPElETEludDhBcnJheSwgRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXJBbGxv
d1NoYXJlZE1vZGU6OkRpc2FsbG93Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKICAg
ICB9CiB9OwogCkBAIC0yMDEsNyArMjA2LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVy
PElETEludDE2QXJyYXk+IDogRGVmYXVsdENvbnZlcnRlcjxJRExJbnQxNkFycmF5PiB7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJv
d2VyPgogICAgIHN0YXRpYyBSZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2Vy
JiYgZXhjZXB0aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExJbnQxNkFycmF5Pjo6Y29u
dmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRo
cm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKKyAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVy
U291cmNlQ29udmVydGVyPElETEludDE2QXJyYXksIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVy
dGVyQWxsb3dTaGFyZWRNb2RlOjpEaXNhbGxvdz46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2Vy
KSk7CiAgICAgfQogfTsKIApAQCAtMjIzLDcgKzIyOCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENv
bnZlcnRlcjxJRExJbnQzMkFycmF5PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMSW50MzJBcnJheT4g
ewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlvblRocm93ZXIgPSBEZWZhdWx0RXhjZXB0
aW9uVGhyb3dlcj4KICAgICBzdGF0aWMgUmV0dXJuVHlwZSBjb252ZXJ0KEpTQzo6SlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9u
VGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkpCiAgICAgewot
ICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMSW50MzJBcnJh
eT46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNl
cHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7CisgICAgICAgIHJldHVybiBEZXRhaWw6
OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExJbnQzMkFycmF5LCBEZXRhaWw6OkJ1ZmZlclNvdXJj
ZUNvbnZlcnRlckFsbG93U2hhcmVkTW9kZTo6RGlzYWxsb3c+Ojpjb252ZXJ0KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9u
VGhyb3dlcikpOwogICAgIH0KIH07CiAKQEAgLTI0NSw3ICsyNTAsNyBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBDb252ZXJ0ZXI8SURMVWludDhBcnJheT4gOiBEZWZhdWx0Q29udmVydGVyPElETFVpbnQ4
QXJyYXk+IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJvd2VyID0gRGVmYXVs
dEV4Y2VwdGlvblRocm93ZXI+CiAgICAgc3RhdGljIFJldHVyblR5cGUgY29udmVydChKU0M6OkpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIEV4
Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigpKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPElETFVp
bnQ4QXJyYXk+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndh
cmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOworICAgICAgICByZXR1cm4g
RGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMVWludDhBcnJheSwgRGV0YWlsOjpCdWZm
ZXJTb3VyY2VDb252ZXJ0ZXJBbGxvd1NoYXJlZE1vZGU6OkRpc2FsbG93Pjo6Y29udmVydChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4
Y2VwdGlvblRocm93ZXIpKTsKICAgICB9CiB9OwogCkBAIC0yNzMsNyArMjc4LDcgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETFVpbnQxNkFycmF5PiA6IERlZmF1bHRDb252ZXJ0ZXI8
SURMVWludDE2QXJyYXk+IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJvd2Vy
ID0gRGVmYXVsdEV4Y2VwdGlvblRocm93ZXI+CiAgICAgc3RhdGljIFJldHVyblR5cGUgY29udmVy
dChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
dmFsdWUsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhy
b3dlcigpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVy
dGVyPElETFVpbnQxNkFycmF5Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwg
c3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKKyAgICAg
ICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPElETFVpbnQxNkFycmF5LCBE
ZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlckFsbG93U2hhcmVkTW9kZTo6RGlzYWxsb3c+Ojpj
b252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9u
VGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOwogICAgIH0KIH07CiAKQEAgLTI5NSw3ICszMDAs
NyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURMVWludDMyQXJyYXk+IDogRGVmYXVs
dENvbnZlcnRlcjxJRExVaW50MzJBcnJheT4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2Vw
dGlvblRocm93ZXIgPSBEZWZhdWx0RXhjZXB0aW9uVGhyb3dlcj4KICAgICBzdGF0aWMgUmV0dXJu
VHlwZSBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIgPSBF
eGNlcHRpb25UaHJvd2VyKCkpCiAgICAgewotICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJT
b3VyY2VDb252ZXJ0ZXI8SURMVWludDMyQXJyYXk+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dl
cikpOworICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMVWlu
dDMyQXJyYXksIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlOjpE
aXNhbGxvdz46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2Fy
ZDxFeGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7CiAgICAgfQogfTsKIApAQCAt
MzE3LDcgKzMyMiw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExVaW50OENsYW1w
ZWRBcnJheT4gOiBEZWZhdWx0Q29udmVydGVyPElETFVpbnQ4Q2xhCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgogICAgIHN0
YXRpYyBSZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0aW9u
VGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBEZXRh
aWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExVaW50OENsYW1wZWRBcnJheT46OmNvbnZlcnQo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2Vy
PihleGNlcHRpb25UaHJvd2VyKSk7CisgICAgICAgIHJldHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJj
ZUNvbnZlcnRlcjxJRExVaW50OENsYW1wZWRBcnJheSwgRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252
ZXJ0ZXJBbGxvd1NoYXJlZE1vZGU6OkRpc2FsbG93Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93
ZXIpKTsKICAgICB9CiB9OwogCkBAIC0zMzksNyArMzQ0LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
Q29udmVydGVyPElETEZsb2F0MzJBcnJheT4gOiBEZWZhdWx0Q29udmVydGVyPElETEZsb2F0MzJB
cnJheT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJvd2VyID0gRGVmYXVsdEV4
Y2VwdGlvblRocm93ZXI+CiAgICAgc3RhdGljIFJldHVyblR5cGUgY29udmVydChKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIEV4Y2Vw
dGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigpKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPElETEZsb2F0
MzJBcnJheT46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2Fy
ZDxFeGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7CisgICAgICAgIHJldHVybiBE
ZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExGbG9hdDMyQXJyYXksIERldGFpbDo6QnVm
ZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlOjpEaXNhbGxvdz46OmNvbnZlcnQobGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihl
eGNlcHRpb25UaHJvd2VyKSk7CiAgICAgfQogfTsKIApAQCAtMzYxLDcgKzM2Niw3IEBAIHRlbXBs
YXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExGbG9hdDY0QXJyYXk+IDogRGVmYXVsdENvbnZlcnRl
cjxJRExGbG9hdDY0QXJyYXk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dl
ciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgogICAgIHN0YXRpYyBSZXR1cm5UeXBlIGNvbnZl
cnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRo
cm93ZXIoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZl
cnRlcjxJRExGbG9hdDY0QXJyYXk+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
LCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOworICAg
ICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMRmxvYXQ2NEFycmF5
LCBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlckFsbG93U2hhcmVkTW9kZTo6RGlzYWxsb3c+
Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0
aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOwogICAgIH0KIH07CiAKQEAgLTM4Myw3ICsz
ODgsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURMQXJyYXlCdWZmZXJWaWV3PiA6
IERlZmF1bHRDb252ZXJ0ZXI8SURMQXJyYXlCdWZmZQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4
Y2VwdGlvblRocm93ZXIgPSBEZWZhdWx0RXhjZXB0aW9uVGhyb3dlcj4KICAgICBzdGF0aWMgUmV0
dXJuVHlwZSBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIg
PSBFeGNlcHRpb25UaHJvd2VyKCkpCiAgICAgewotICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZm
ZXJTb3VyY2VDb252ZXJ0ZXI8SURMQXJyYXlCdWZmZXJWaWV3Pjo6Y29udmVydChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlv
blRocm93ZXIpKTsKKyAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVy
PElETEFycmF5QnVmZmVyVmlldywgRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXJBbGxvd1No
YXJlZE1vZGU6OkRpc2FsbG93Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwg
c3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKICAgICB9
CiB9OwogCkBAIC0zOTgsNCArNDAzLDE3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEpTQ29udmVydGVy
PElETEFycmF5QnVmZmVyVmlldz4gewogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
CitzdHJ1Y3QgQ29udmVydGVyPElETEFsbG93U2hhcmVkQWRhcHRvcjxUPj4gOiBEZWZhdWx0Q29u
dmVydGVyPFQ+IHsKKyAgICB1c2luZyBDb252ZXJ0ZXJUeXBlID0gQ29udmVydGVyPFQ+OworICAg
IHVzaW5nIFdyYXBwZXJUeXBlID0gdHlwZW5hbWUgQ29udmVydGVyVHlwZTo6V3JhcHBlclR5cGU7
CisgICAgdXNpbmcgUmV0dXJuVHlwZSA9IHR5cGVuYW1lIENvbnZlcnRlclR5cGU6OlJldHVyblR5
cGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJvd2VyID0gRGVmYXVsdEV4
Y2VwdGlvblRocm93ZXI+CisgICAgc3RhdGljIFJldHVyblR5cGUgY29udmVydChKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIEV4Y2Vw
dGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigpKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPFQsIERldGFp
bDo6QnVmZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlOjpBbGxvdz46OmNvbnZlcnQo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2Vy
PihleGNlcHRpb25UaHJvd2VyKSk7CisgICAgfQorfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VW5p
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFVuaW9uLmgKaW5k
ZXggMWY4MjQzM2Y5MmM3MWExMWFiZTc3ODY5OTE0MzZiN2I4M2Q1NWI0Yi4uZjhjNzAxYmUxOTA2
MGM0OWQ2N2E1ZjAwZmJmOWE2NzI4NWVmZWZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Db252ZXJ0VW5pb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUNvbnZlcnRVbmlvbi5oCkBAIC0yMjUsOSArMjI1LDkgQEAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gVD4gc3RydWN0IENvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4gOiBEZWZhdWx0
Q29udmVydGVyPElETFUKICAgICAgICAgLy8gNy4gSWYgVHlwZShWKSBpcyBPYmplY3QgYW5kIFYg
aGFzIGFuIFtbQXJyYXlCdWZmZXJEYXRhXV0gaW50ZXJuYWwgc2xvdCwgdGhlbjoKICAgICAgICAg
Ly8gICAgIDEuIElmIHR5cGVzIGluY2x1ZGVzIEFycmF5QnVmZmVyLCB0aGVuIHJldHVybiB0aGUg
cmVzdWx0IG9mIGNvbnZlcnRpbmcgViB0byBBcnJheUJ1ZmZlci4KICAgICAgICAgLy8gICAgIDIu
IElmIHR5cGVzIGluY2x1ZGVzIG9iamVjdCwgdGhlbiByZXR1cm4gdGhlIElETCB2YWx1ZSB0aGF0
IGlzIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgVi4KLSAgICAgICAgY29uc3RleHByIGJvb2wg
aGFzQXJyYXlCdWZmZXJUeXBlID0gYnJpZ2FuZDo6YW55PFR5cGVMaXN0LCBzdGQ6OmlzX3NhbWU8
SURMQXJyYXlCdWZmZXIsIGJyaWdhbmQ6Ol8xPj46OnZhbHVlOworICAgICAgICBjb25zdGV4cHIg
Ym9vbCBoYXNBcnJheUJ1ZmZlclR5cGUgPSBicmlnYW5kOjphbnk8VHlwZUxpc3QsIElzSURMQXJy
YXlCdWZmZXI8YnJpZ2FuZDo6XzE+Pjo6dmFsdWU7CiAgICAgICAgIGlmIChoYXNBcnJheUJ1ZmZl
clR5cGUgfHwgaGFzT2JqZWN0VHlwZSkgewotICAgICAgICAgICAgYXV0byBhcnJheUJ1ZmZlciA9
IEpTQzo6SlNBcnJheUJ1ZmZlcjo6dG9XcmFwcGVkKHZtLCB2YWx1ZSk7CisgICAgICAgICAgICBh
dXRvIGFycmF5QnVmZmVyID0gKGJyaWdhbmQ6OmFueTxUeXBlTGlzdCwgSXNJRExBcnJheUJ1ZmZl
ckFsbG93U2hhcmVkPGJyaWdhbmQ6Ol8xPj46OnZhbHVlKSA/IEpTQzo6SlNBcnJheUJ1ZmZlcjo6
dG9XcmFwcGVkQWxsb3dTaGFyZWQodm0sIHZhbHVlKSA6IEpTQzo6SlNBcnJheUJ1ZmZlcjo6dG9X
cmFwcGVkKHZtLCB2YWx1ZSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlCdWZmZXIpIHsKICAgICAg
ICAgICAgICAgICBpZiAoaGFzQXJyYXlCdWZmZXJUeXBlKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gQ29uZGl0aW9uYWxSZXR1cm5lcjxSZXR1cm5UeXBlLCBoYXNBcnJheUJ1ZmZlclR5cGU+
OjpnZXQoV1RGTW92ZShhcnJheUJ1ZmZlcikpLnZhbHVlKCk7CkBAIC0yMzUsOSArMjM1LDkgQEAg
dGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4gc3RydWN0IENvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4g
OiBEZWZhdWx0Q29udmVydGVyPElETFUKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAg
ICAgIGNvbnN0ZXhwciBib29sIGhhc0FycmF5QnVmZmVyVmlld1R5cGUgPSBicmlnYW5kOjphbnk8
VHlwZUxpc3QsIHN0ZDo6aXNfc2FtZTxJRExBcnJheUJ1ZmZlclZpZXcsIGJyaWdhbmQ6Ol8xPj46
OnZhbHVlOworICAgICAgICBjb25zdGV4cHIgYm9vbCBoYXNBcnJheUJ1ZmZlclZpZXdUeXBlID0g
YnJpZ2FuZDo6YW55PFR5cGVMaXN0LCBJc0lETEFycmF5QnVmZmVyVmlldzxicmlnYW5kOjpfMT4+
Ojp2YWx1ZTsKICAgICAgICAgaWYgKGhhc0FycmF5QnVmZmVyVmlld1R5cGUgfHwgaGFzT2JqZWN0
VHlwZSkgewotICAgICAgICAgICAgYXV0byBhcnJheUJ1ZmZlclZpZXcgPSBKU0M6OkpTQXJyYXlC
dWZmZXJWaWV3Ojp0b1dyYXBwZWQodm0sIHZhbHVlKTsKKyAgICAgICAgICAgIGF1dG8gYXJyYXlC
dWZmZXJWaWV3ID0gKGJyaWdhbmQ6OmFueTxUeXBlTGlzdCwgSXNJRExBcnJheUJ1ZmZlclZpZXdB
bGxvd1NoYXJlZDxicmlnYW5kOjpfMT4+Ojp2YWx1ZSkgPyBKU0M6OkpTQXJyYXlCdWZmZXJWaWV3
Ojp0b1dyYXBwZWRBbGxvd1NoYXJlZCh2bSwgdmFsdWUpIDogSlNDOjpKU0FycmF5QnVmZmVyVmll
dzo6dG9XcmFwcGVkKHZtLCB2YWx1ZSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlCdWZmZXJWaWV3
KSB7CiAgICAgICAgICAgICAgICAgaWYgKGhhc0FycmF5QnVmZmVyVmlld1R5cGUpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBDb25kaXRpb25hbFJldHVybmVyPFJldHVyblR5cGUsIGhhc0Fy
cmF5QnVmZmVyVmlld1R5cGU+OjpnZXQoV1RGTW92ZShhcnJheUJ1ZmZlclZpZXcpKS52YWx1ZSgp
OwpAQCAtNDA1LDQgKzQwNSwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPiBzdHJ1Y3QgSlND
b252ZXJ0ZXI8SURMVW5pb248VC4uLj4+IHsKICAgICB9CiB9OwogCisvLyBCdWZmZXJTb3VyY2Ug
c3BlY2lhbGl6YXRpb24uIEluIFdlYktpdCwgQnVmZmVyU291cmNlIGlzIGRlZmluZWQgYXMgSURM
VW5pb248SURMQXJyYXlCdWZmZXJWaWV3LCBJRExBcnJheUJ1ZmZlcj4gYXMgYSBoYWNrLCBhbmQg
aXQgaXMgbm90IGNvbXBhdGlibGUgdG8KKy8vIGFubm90YXRpb24gZGVzY3JpYmVkIGluIFdlYklE
TC4KK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExBbGxvd1NoYXJlZEFkYXB0b3I8SURM
VW5pb248SURMQXJyYXlCdWZmZXJWaWV3LCBJRExBcnJheUJ1ZmZlcj4+PiA6IERlZmF1bHRDb252
ZXJ0ZXI8SURMVW5pb248SURMQXJyYXlCdWZmZXJWaWV3LCBJRExBcnJheUJ1ZmZlcj4+IHsKKyAg
ICBzdGF0aWMgYXV0byBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkgLT4gZGVjbHR5cGUoYXV0bykKKyAgICB7CisgICAg
ICAgIHJldHVybiBDb252ZXJ0ZXI8SURMVW5pb248SURMQWxsb3dTaGFyZWRBZGFwdG9yPElETEFy
cmF5QnVmZmVyVmlldz4sIElETEFsbG93U2hhcmVkQWRhcHRvcjxJRExBcnJheUJ1ZmZlcj4+Pjo6
Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgfQorfTsKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggMmQ5OWJlNjQxM2MzMGMxNDA4ZjUzNmJjMThh
MjFlYzg0MWE5Nzc2My4uN2JiOGE2ZDlkMzJjZmRkMDZhNTAzYWNmOTk5M2ZiMzIyZWVjNjliOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCkBAIC03NSw2ICs3NSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNT
ZXQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1NldEl0ZXJhdG9yLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNUeXBlZEFycmF5cy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTV2ViQXNzZW1ibHlNZW1vcnkuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1dl
YkFzc2VtYmx5TW9kdWxlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3Ry
dWN0b3IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgpA
QCAtMTgyLDYgKzE4Myw5IEBAIGVudW0gU2VyaWFsaXphdGlvblRhZyB7CiAjZW5kaWYKICAgICBC
aWdJbnRUYWcgPSA0NywKICAgICBCaWdJbnRPYmplY3RUYWcgPSA0OCwKKyNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCisgICAgV2FzbU1lbW9yeVRhZyA9IDQ5LAorI2VuZGlmCiAgICAgRXJyb3JUYWcg
PSAyNTUKIH07CiAKQEAgLTM1Nyw3ICszNjEsNiBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
aW5nRGF0YUlzOEJpdEZsYWcgPSAweDgwMDAwMDAwOwogICogICAgfCBNZXNzYWdlUG9ydFJlZmVy
ZW5jZVRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAgICB8IEFycmF5QnVmZmVyCiAgKiAgICB8IEFy
cmF5QnVmZmVyVmlld1RhZyBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgPGJ5dGVPZmZzZXQ6dWludDMy
X3Q+IDxieXRlTGVuZ3RoOnVpbnQzMl90PiAoQXJyYXlCdWZmZXIgfCBPYmplY3RSZWZlcmVuY2Up
Ci0gKiAgICB8IEFycmF5QnVmZmVyVHJhbnNmZXJUYWcgPHZhbHVlOnVpbnQzMl90PgogICogICAg
fCBDcnlwdG9LZXlUYWcgPHdyYXBwZWRLZXlMZW5ndGg6dWludDMyX3Q+IDxmYWN0b3I6Ynl0ZXt3
cmFwcGVkS2V5TGVuZ3RofT4KICAqICAgIHwgRE9NUG9pbnQKICAqICAgIHwgRE9NUmVjdApAQCAt
MzY3LDYgKzM3MCw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJpbmdEYXRhSXM4Qml0Rmxh
ZyA9IDB4ODAwMDAwMDA7CiAgKiAgICB8IFJUQ0NlcnRpZmljYXRlVGFnCiAgKiAgICB8IEltYWdl
Qml0bWFwVGFnIDxvcmlnaW5DbGVhbjp1aW50OF90PiA8bG9naWNhbFdpZHRoOmludDMyX3Q+IDxs
b2dpY2FsSGVpZ2h0OmludDMyX3Q+IDxyZXNvbHV0aW9uU2NhbGU6ZG91YmxlPiA8Ynl0ZUxlbmd0
aDp1aW50MzJfdD4oPGltYWdlQnl0ZURhdGE6dWludDhfdD4pCiAgKiAgICB8IE9mZnNjcmVlbkNh
bnZhc1RyYW5zZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KKyAqICAgIHwgV2FzbU1lbW9yeVRhZyA8
dmFsdWU6dWludDMyX3Q+CiAgKgogICogSW5zaWRlIGNlcnRpZmljYXRlLCBkYXRhIGlzIHNlcmlh
bGl6ZWQgaW4gdGhpcyBmb3JtYXQgYXMgcGVyIHNwZWM6CiAgKgpAQCAtNDE5LDYgKzQyMyw4IEBA
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJpbmdEYXRhSXM4Qml0RmxhZyA9IDB4ODAwMDAwMDA7
CiAgKgogICogQXJyYXlCdWZmZXIgOi0KICAqICAgIEFycmF5QnVmZmVyVGFnIDxsZW5ndGg6dWlu
dDMyX3Q+IDxjb250ZW50czpieXRle2xlbmd0aH0+CisgKiAgICBBcnJheUJ1ZmZlclRyYW5zZmVy
VGFnIDx2YWx1ZTp1aW50MzJfdD4KKyAqICAgIFNoYXJlZEFycmF5QnVmZmVyVGFnIDx2YWx1ZTp1
aW50MzJfdD4KICAqCiAgKiBDcnlwdG9LZXlITUFDIDotCiAgKiAgICA8a2V5U2l6ZTp1aW50MzJf
dD4gPGtleURhdGE6Ynl0ZXtrZXlTaXplfT4gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZyAv
LyBBbGdvcml0aG0gdGFnIGlubmVyIGhhc2ggZnVuY3Rpb24uCkBAIC01NzYsNiArNTgyLDcgQEAg
Y2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICNlbmRpZgogI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKICAgICAgICAgICAgIFdhc21Nb2R1bGVBcnJheSYgd2FzbU1vZHVsZXMsCisg
ICAgICAgICAgICBXYXNtTWVtb3J5SGFuZGxlQXJyYXkmIHdhc21NZW1vcnlIYW5kbGVzLAogI2Vu
ZGlmCiAgICAgICAgIFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgVmVjdG9yPHVpbnQ4X3Q+JiBv
dXQsIFNlcmlhbGl6YXRpb25Db250ZXh0IGNvbnRleHQsIEFycmF5QnVmZmVyQ29udGVudHNBcnJh
eSYgc2hhcmVkQnVmZmVycykKICAgICB7CkBAIC01ODUsNiArNTkyLDcgQEAgY2xhc3MgQ2xvbmVT
ZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICAgICAgICAgICAgIHdhc21Nb2R1bGVzLAorICAgICAgICAgICAgd2FzbU1lbW9yeUhhbmRsZXMs
CiAjZW5kaWYKICAgICAgICAgICAgIGJsb2JVUkxzLCBvdXQsIGNvbnRleHQsIHNoYXJlZEJ1ZmZl
cnMpOwogICAgICAgICByZXR1cm4gc2VyaWFsaXplci5zZXJpYWxpemUodmFsdWUpOwpAQCAtNjE1
LDYgKzYyMyw3IEBAIGNsYXNzIENsb25lU2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICBXYXNtTW9kdWxlQXJyYXkmIHdh
c21Nb2R1bGVzLAorICAgICAgICAgICAgV2FzbU1lbW9yeUhhbmRsZUFycmF5JiB3YXNtTWVtb3J5
SGFuZGxlcywKICNlbmRpZgogICAgICAgICBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIFZlY3Rv
cjx1aW50OF90PiYgb3V0LCBTZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0LCBBcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXkmIHNoYXJlZEJ1ZmZlcnMpCiAgICAgICAgIDogQ2xvbmVCYXNlKGxleGlj
YWxHbG9iYWxPYmplY3QpCkBAIC02MjUsNiArNjM0LDcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVy
IDogQ2xvbmVCYXNlIHsKICAgICAgICAgLCBtX3NoYXJlZEJ1ZmZlcnMoc2hhcmVkQnVmZmVycykK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgbV93YXNtTW9kdWxlcyh3YXNtTW9k
dWxlcykKKyAgICAgICAgLCBtX3dhc21NZW1vcnlIYW5kbGVzKHdhc21NZW1vcnlIYW5kbGVzKQog
I2VuZGlmCiAgICAgewogICAgICAgICB3cml0ZShDdXJyZW50VmVyc2lvbik7CkBAIC0xMjMwLDYg
KzEyNDAsNyBAQCBjbGFzcyBDbG9uZVNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAgICAgICAg
ICAgICAgIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IGR1bW15QXJyYXlCdWZmZXJz
OwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgICAgICAgICBXYXNtTW9kdWxlQXJy
YXkgZHVtbXlNb2R1bGVzOworICAgICAgICAgICAgICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSBk
dW1teU1lbW9yeUhhbmRsZXM7CiAjZW5kaWYKICAgICAgICAgICAgICAgICBBcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXkgZHVtbXlTaGFyZWRCdWZmZXJzOwogICAgICAgICAgICAgICAgIENsb25lU2Vy
aWFsaXplciByYXdLZXlTZXJpYWxpemVyKG1fbGV4aWNhbEdsb2JhbE9iamVjdCwgZHVtbXlNZXNz
YWdlUG9ydHMsIGR1bW15QXJyYXlCdWZmZXJzLCB7IH0sCkBAIC0xMjM4LDYgKzEyNDksNyBAQCBj
bGFzcyBDbG9uZVNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogI2VuZGlmCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgICAgICAgICAgICAgICAgICBkdW1teU1vZHVsZXMsCisgICAgICAgICAg
ICAgICAgICAgIGR1bW15TWVtb3J5SGFuZGxlcywKICNlbmRpZgogICAgICAgICAgICAgICAgICAg
ICBkdW1teUJsb2JVUkxzLCBzZXJpYWxpemVkS2V5LCBTZXJpYWxpemF0aW9uQ29udGV4dDo6RGVm
YXVsdCwgZHVtbXlTaGFyZWRCdWZmZXJzKTsKICAgICAgICAgICAgICAgICByYXdLZXlTZXJpYWxp
emVyLndyaXRlKGtleSk7CkBAIC0xMjc0LDYgKzEyODYsMjEgQEAgY2xhc3MgQ2xvbmVTZXJpYWxp
emVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgICAgICAgICB3cml0ZShpbmRleCk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoSlNX
ZWJBc3NlbWJseU1lbW9yeSogbWVtb3J5ID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TWVt
b3J5Kj4odm0sIG9iaikpIHsKKyAgICAgICAgICAgICAgICBpZiAobWVtb3J5LT5tZW1vcnkoKS5z
aGFyaW5nTW9kZSgpICE9IEpTQzo6V2FzbTo6TWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZCkgewor
ICAgICAgICAgICAgICAgICAgICBjb2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkRhdGFD
bG9uZUVycm9yOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1fY29udGV4dCAhPSBTZXJpYWxpemF0aW9uQ29u
dGV4dDo6V29ya2VyUG9zdE1lc3NhZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgY29kZSA9IFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlOjpEYXRhQ2xvbmVFcnJvcjsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHVpbnQz
Ml90IGluZGV4ID0gbV93YXNtTWVtb3J5SGFuZGxlcy5zaXplKCk7CisgICAgICAgICAgICAgICAg
bV93YXNtTWVtb3J5SGFuZGxlcy5hcHBlbmQobWFrZVJlZihtZW1vcnktPm1lbW9yeSgpLmhhbmRs
ZSgpKSk7CisgICAgICAgICAgICAgICAgd3JpdGUoV2FzbU1lbW9yeVRhZyk7CisgICAgICAgICAg
ICAgICAgd3JpdGUoaW5kZXgpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgfQogI2VuZGlmCiAgICAgICAgICAgICBpZiAob2JqLT5pbmhlcml0czxKU0RPTVBvaW50
UmVhZE9ubHk+KHZtKSkgewogICAgICAgICAgICAgICAgIGR1bXBET01Qb2ludChvYmopOwpAQCAt
MTY1OCw2ICsxNjg1LDcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAg
ICBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkmIG1fc2hhcmVkQnVmZmVyczsKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAgICAgV2FzbU1vZHVsZUFycmF5JiBtX3dhc21Nb2R1bGVzOworICAgIFdh
c21NZW1vcnlIYW5kbGVBcnJheSYgbV93YXNtTWVtb3J5SGFuZGxlczsKICNlbmRpZgogfTsKIApA
QCAtMTkzNyw2ICsxOTY1LDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2Ug
ewogICAgICAgICAsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogYXJyYXlCdWZmZXJDb250ZW50
c0FycmF5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGJsb2JVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiBibG9iRmlsZVBhdGhzLCBBcnJheUJ1
ZmZlckNvbnRlbnRzQXJyYXkqIHNoYXJlZEJ1ZmZlcnMKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
CiAgICAgICAgICwgV2FzbU1vZHVsZUFycmF5KiB3YXNtTW9kdWxlcworICAgICAgICAsIFdhc21N
ZW1vcnlIYW5kbGVBcnJheSogd2FzbU1lbW9yeUhhbmRsZXMKICNlbmRpZgogICAgICAgICApCiAg
ICAgewpAQCAtMTk0OCw2ICsxOTc3LDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9u
ZUJhc2UgewogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAgLCB3
YXNtTW9kdWxlcworICAgICAgICAgICAgLCB3YXNtTWVtb3J5SGFuZGxlcwogI2VuZGlmCiAgICAg
ICAgICAgICApOwogICAgICAgICBpZiAoIWRlc2VyaWFsaXplci5pc1ZhbGlkKCkpCkBAIC0yMDAx
LDYgKzIwMzEsNyBAQCBjbGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAjZW5k
aWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgV2FzbU1vZHVsZUFycmF5KiB3
YXNtTW9kdWxlcyA9IG51bGxwdHIKKyAgICAgICAgLCBXYXNtTWVtb3J5SGFuZGxlQXJyYXkqIHdh
c21NZW1vcnlIYW5kbGVzID0gbnVsbHB0cgogI2VuZGlmCiAgICAgICAgICkKICAgICAgICAgOiBD
bG9uZUJhc2UobGV4aWNhbEdsb2JhbE9iamVjdCkKQEAgLTIwMjEsNiArMjA1Miw3IEBAIGNsYXNz
IENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKICAgICAgICAgLCBtX3dhc21Nb2R1bGVzKHdhc21Nb2R1bGVzKQorICAgICAgICAs
IG1fd2FzbU1lbW9yeUhhbmRsZXMod2FzbU1lbW9yeUhhbmRsZXMpCiAjZW5kaWYKICAgICB7CiAg
ICAgICAgIGlmICghcmVhZChtX3ZlcnNpb24pKQpAQCAtMjAzMyw2ICsyMDY1LDcgQEAgY2xhc3Mg
Q2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQogICAgICAgICAsIFdhc21Nb2R1bGVBcnJheSogd2FzbU1vZHVsZXMKKyAgICAgICAg
LCBXYXNtTWVtb3J5SGFuZGxlQXJyYXkqIHdhc21NZW1vcnlIYW5kbGVzCiAjZW5kaWYKICAgICAg
ICAgKQogICAgICAgICA6IENsb25lQmFzZShsZXhpY2FsR2xvYmFsT2JqZWN0KQpAQCAtMjA1Niw2
ICsyMDg5LDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogI2VuZGlm
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAsIG1fd2FzbU1vZHVsZXMod2FzbU1v
ZHVsZXMpCisgICAgICAgICwgbV93YXNtTWVtb3J5SGFuZGxlcyh3YXNtTWVtb3J5SGFuZGxlcykK
ICNlbmRpZgogICAgIHsKICAgICAgICAgaWYgKCFyZWFkKG1fdmVyc2lvbikpCkBAIC0zMjk5LDYg
KzMzMzMsMzMgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAgICAg
ICAgICAgbV9nY0J1ZmZlci5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93KHJlc3VsdCk7CiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CisgICAgICAgIGNhc2UgV2FzbU1lbW9y
eVRhZzogeworICAgICAgICAgICAgdWludDMyX3QgaW5kZXg7CisgICAgICAgICAgICBib29sIGlu
ZGV4U3VjY2Vzc2Z1bGx5UmVhZCA9IHJlYWQoaW5kZXgpOworICAgICAgICAgICAgaWYgKCFpbmRl
eFN1Y2Nlc3NmdWxseVJlYWQgfHwgIW1fd2FzbU1lbW9yeUhhbmRsZXMgfHwgaW5kZXggPj0gbV93
YXNtTWVtb3J5SGFuZGxlcy0+c2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgZmFpbCgpOworICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBSZWZQdHI8V2FzbTo6TWVtb3J5SGFuZGxlPiBoYW5kbGUgPSBtX3dhc21NZW1vcnlIYW5kbGVz
LT5hdChpbmRleCk7CisgICAgICAgICAgICBpZiAoIWhhbmRsZSkgeworICAgICAgICAgICAgICAg
IGZhaWwoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYXV0byYgdm0gPSBtX2xleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAg
ICAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiByZXN1bHQgPSBKU0M6OkpTV2ViQXNzZW1ibHlNZW1v
cnk6OnRyeUNyZWF0ZShtX2xleGljYWxHbG9iYWxPYmplY3QsIHZtLCBtX2dsb2JhbE9iamVjdC0+
d2ViQXNzZW1ibHlNZW1vcnlTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAvLyBTaW5jZSB3ZSBh
cmUgY2xvbmluZyBhIEpTV2ViQXNzZW1ibHlNZW1vcnksIGl0J3MgaW1wb3NzaWJsZSBmb3IgdGhh
dAorICAgICAgICAgICAgLy8gbW9kdWxlIHRvIG5vdCBoYXZlIGJlZW4gYSB2YWxpZCBtb2R1bGUu
IFRoZXJlZm9yZSwgY3JlYXRlU3R1YiBzaG91bGQKKyAgICAgICAgICAgIC8vIG5vdCB0cm93Lgor
ICAgICAgICAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgICAgICAg
ICBSZWY8V2FzbTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OmNyZWF0ZShoYW5kbGUu
cmVsZWFzZU5vbk51bGwoKSwKKyAgICAgICAgICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpO
b3RpZnlQcmVzc3VyZSkgeyB2bS5oZWFwLmNvbGxlY3RBc3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1
bGwpOyB9LAorICAgICAgICAgICAgICAgIFsmdm1dIChXYXNtOjpNZW1vcnk6OlN5bmNUcnlUb1Jl
Y2xhaW0pIHsgdm0uaGVhcC5jb2xsZWN0U3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOyB9LAor
ICAgICAgICAgICAgICAgIFsmdm0sIHJlc3VsdF0gKFdhc206Ok1lbW9yeTo6R3Jvd1N1Y2Nlc3Ms
IFdhc206OlBhZ2VDb3VudCBvbGRQYWdlQ291bnQsIFdhc206OlBhZ2VDb3VudCBuZXdQYWdlQ291
bnQpIHsgcmVzdWx0LT5ncm93U3VjY2Vzc0NhbGxiYWNrKHZtLCBvbGRQYWdlQ291bnQsIG5ld1Bh
Z2VDb3VudCk7IH0pOworICAgICAgICAgICAgcmVzdWx0LT5hZG9wdChXVEZNb3ZlKG1lbW9yeSkp
OworICAgICAgICAgICAgbV9nY0J1ZmZlci5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93KHJlc3Vs
dCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CiAjZW5kaWYKICAgICAg
ICAgY2FzZSBBcnJheUJ1ZmZlclRhZzogewogICAgICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBhcnJheUJ1ZmZlcjsKQEAgLTM0MzksNiArMzUwMCw3IEBAIGNsYXNzIENsb25lRGVzZXJpYWxp
emVyIDogQ2xvbmVCYXNlIHsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBX
YXNtTW9kdWxlQXJyYXkqIG1fd2FzbU1vZHVsZXM7CisgICAgV2FzbU1lbW9yeUhhbmRsZUFycmF5
KiBtX3dhc21NZW1vcnlIYW5kbGVzOwogI2VuZGlmCiAKICAgICBTdHJpbmcgYmxvYkZpbGVQYXRo
Rm9yQmxvYlVSTChjb25zdCBTdHJpbmcmIGJsb2JVUkwpCkBAIC0zNjYxLDYgKzM3MjMsNyBAQCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhf
dD4mJiBidWZmZXIsIGNvbnN0IFZlYwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
ICAgICAgICAsIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTW9kdWxlQXJyYXk+IHdhc21Nb2R1bGVzQXJy
YXkKKyAgICAgICAgLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1lbW9yeUhhbmRsZUFycmF5PiB3YXNt
TWVtb3J5SGFuZGxlc0FycmF5CiAjZW5kaWYKICAgICAgICAgKQogICAgIDogbV9kYXRhKFdURk1v
dmUoYnVmZmVyKSkKQEAgLTM2NzIsNiArMzczNSw3IEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgY29uc3QgVmVj
CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgLCBtX3dhc21Nb2R1bGVzQXJy
YXkoV1RGTW92ZSh3YXNtTW9kdWxlc0FycmF5KSkKKyAgICAsIG1fd2FzbU1lbW9yeUhhbmRsZXNB
cnJheShXVEZNb3ZlKHdhc21NZW1vcnlIYW5kbGVzQXJyYXkpKQogI2VuZGlmCiB7CiAgICAgLy8g
U2luY2UgdGhpcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgaXMgbWVhbnQgdG8gYmUgcGFzc2VkIGJl
dHdlZW4gdGhyZWFkcywgaXRzIFN0cmluZyBkYXRhIG1lbWJlcnMKQEAgLTM3MTAsNiArMzc3NCwx
MCBAQCBzaXplX3QgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjb21wdXRlTWVtb3J5Q29zdCgpIGNv
bnN0CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgLy8gV2UgYXJlIG5vdCBzdXBwb3J0
aW5nIFdlYkFzc2VtYmx5IE1vZHVsZSBtZW1vcnkgZXN0aW1hdGlvbiB5ZXQuCisgICAgaWYgKG1f
d2FzbU1lbW9yeUhhbmRsZXNBcnJheSkgeworICAgICAgICBmb3IgKGF1dG8mIGNvbnRlbnQgOiAq
bV93YXNtTWVtb3J5SGFuZGxlc0FycmF5KQorICAgICAgICAgICAgY29zdCArPSBjb250ZW50LT5z
aXplKCk7CisgICAgfQogI2VuZGlmCiAKICAgICBmb3IgKGF1dG8mIHVybHMgOiBtX2Jsb2JVUkxz
KQpAQCAtMzgwMCw2ICszODY4LDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QmIGxleGkKICAgICBWZWN0
b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBkdW1teUFycmF5QnVmZmVyczsKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAgICAgV2FzbU1vZHVsZUFycmF5IGR1bW15TW9kdWxlczsKKyAgICBX
YXNtTWVtb3J5SGFuZGxlQXJyYXkgZHVtbXlNZW1vcnlIYW5kbGVzOwogI2VuZGlmCiAgICAgQXJy
YXlCdWZmZXJDb250ZW50c0FycmF5IGR1bW15U2hhcmVkQnVmZmVyczsKICAgICBhdXRvIGNvZGUg
PSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUs
IGR1bW15TWVzc2FnZVBvcnRzLCBkdW1teUFycmF5QnVmZmVycywgZHVtbXlJbWFnZUJpdG1hcHMs
CkBAIC0zODA4LDExICszODc3LDEzIEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0JiBsZXhpCiAjZW5kaWYK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIGR1bW15TW9kdWxlcywKKyAgICAgICAg
ZHVtbXlNZW1vcnlIYW5kbGVzLAogI2VuZGlmCiAgICAgICAgIGJsb2JVUkxzLCBidWZmZXIsIFNl
cmlhbGl6YXRpb25Db250ZXh0OjpEZWZhdWx0LCBkdW1teVNoYXJlZEJ1ZmZlcnMpOwogCiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZHVtbXlNb2R1bGVz
LmlzRW1wdHkoKSwgIldhc206Ok1vZHVsZSBzZXJpYWxpemF0aW9uIGlzIG9ubHkgYWxsb3dlZCBp
biB0aGUgcG9zdE1lc3NhZ2UgY29udGV4dCIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZHVt
bXlNZW1vcnlIYW5kbGVzLmlzRW1wdHkoKSwgIldhc206Ok1lbW9yeSBzZXJpYWxpemF0aW9uIGlz
IG9ubHkgYWxsb3dlZCBpbiB0aGUgcG9zdE1lc3NhZ2UgY29udGV4dCIpOwogI2VuZGlmCiAKICAg
ICBpZiAodGhyb3dFeGNlcHRpb25zID09IFNlcmlhbGl6YXRpb25FcnJvck1vZGU6OlRocm93aW5n
KQpAQCAtMzg1OSw3ICszOTMwLDcgQEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICNlbmRpZgog
ICAgIGZvciAoYXV0byYgdHJhbnNmZXJhYmxlIDogdHJhbnNmZXJMaXN0KSB7CiAgICAgICAgIGlm
IChhdXRvIGFycmF5QnVmZmVyID0gdG9Qb3NzaWJseVNoYXJlZEFycmF5QnVmZmVyKHZtLCB0cmFu
c2ZlcmFibGUuZ2V0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXJyYXlCdWZmZXItPmlzRGV0YWNo
ZWQoKSkKKyAgICAgICAgICAgIGlmIChhcnJheUJ1ZmZlci0+aXNEZXRhY2hlZCgpIHx8IGFycmF5
QnVmZmVyLT5pc1NoYXJlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBE
YXRhQ2xvbmVFcnJvciB9OwogICAgICAgICAgICAgaWYgKGFycmF5QnVmZmVyLT5pc0xvY2tlZCgp
KSB7CiAgICAgICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwpAQCAtMzkwNCw2ICszOTc1LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICAgICBWZWN0
b3I8U3RyaW5nPiBibG9iVVJMczsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV2FzbU1v
ZHVsZUFycmF5IHdhc21Nb2R1bGVzOworICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSB3YXNtTWVt
b3J5SGFuZGxlczsKICNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXk+IHNoYXJlZEJ1ZmZlcnMgPSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNB
cnJheT4oKTsKICAgICBhdXRvIGNvZGUgPSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSgmbGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzLCBpbWFn
ZUJpdG1hcHMsCkBAIC0zOTExLDcgKzM5ODMsOCBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYgog
ICAgICAgICBvZmZzY3JlZW5DYW52YXNlcywKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKLSAgICAgICAgd2FzbU1vZHVsZXMsIAorICAgICAgICB3YXNtTW9kdWxlcywKKyAgICAgICAg
d2FzbU1lbW9yeUhhbmRsZXMsCiAjZW5kaWYKICAgICAgICAgYmxvYlVSTHMsIGJ1ZmZlciwgY29u
dGV4dCwgKnNoYXJlZEJ1ZmZlcnMpOwogCkBAIC0zOTM2LDYgKzQwMDksNyBAQCBFeGNlcHRpb25P
cjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoSlNHbG9iYWxPYgogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAg
ICAgICAgICwgbWFrZVVuaXF1ZTxXYXNtTW9kdWxlQXJyYXk+KHdhc21Nb2R1bGVzKQorICAgICAg
ICAgICAgICAgICwgY29udGV4dCA9PSBTZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1l
c3NhZ2UgPyBtYWtlVW5pcXVlPFdhc21NZW1vcnlIYW5kbGVBcnJheT4od2FzbU1lbW9yeUhhbmRs
ZXMpIDogbnVsbHB0cgogI2VuZGlmCiAgICAgICAgICAgICAgICAgKSk7CiB9CkBAIC0zOTkzLDYg
KzQwNjcsNyBAQCBKU1ZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsCiAgICAgICAgICwgbV9hcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXkuZ2V0KCksIG1fZGF0YSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMsIG1f
c2hhcmVkQnVmZmVyQ29udGVudHNBcnJheS5nZXQoKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICAgICAgICAgLCBtX3dhc21Nb2R1bGVzQXJyYXkuZ2V0KCkKKyAgICAgICAgLCBtX3dhc21NZW1v
cnlIYW5kbGVzQXJyYXkuZ2V0KCkKICNlbmRpZgogICAgICAgICApOwogICAgIGlmICh0aHJvd0V4
Y2VwdGlvbnMgPT0gU2VyaWFsaXphdGlvbkVycm9yTW9kZTo6VGhyb3dpbmcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGQy
YTBjNGEwYjgzZGFlODkyZGI3OTUwNmVkMzE2ZGViMzhhMTY1MGQuLjBjZGI0MDE4Yzg0N2ZhMDBm
ZWQ3ZjVmYjBmY2JjYTM1Mzk4MzUyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC00MSw2ICs0MSw3IEBAIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IE9wYXF1ZUpTVmFsdWUqIEpTVmFsdWVSZWY7CiAjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIGNsYXNzIE1vZHVsZTsK
K2NsYXNzIE1lbW9yeUhhbmRsZTsKIH0gfQogI2VuZGlmCiAKQEAgLTYxLDYgKzYyLDcgQEAgZW51
bSBjbGFzcyBTZXJpYWxpemF0aW9uQ29udGV4dCB7IERlZmF1bHQsIFdvcmtlclBvc3RNZXNzYWdl
LCBXaW5kb3dQb3N0TWVzc2FnZQogdXNpbmcgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5ID0gVmVj
dG9yPEpTQzo6QXJyYXlCdWZmZXJDb250ZW50cz47CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
dXNpbmcgV2FzbU1vZHVsZUFycmF5ID0gVmVjdG9yPFJlZlB0cjxKU0M6Oldhc206Ok1vZHVsZT4+
OwordXNpbmcgV2FzbU1lbW9yeUhhbmRsZUFycmF5ID0gVmVjdG9yPFJlZlB0cjxKU0M6Oldhc206
Ok1lbW9yeUhhbmRsZT4+OwogI2VuZGlmCiAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9J
REVOVElGSUVSKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CkBAIC0xMjIsNiArMTI0LDcgQEAgY2xh
c3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4KICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAg
ICAgICAgLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1vZHVsZUFycmF5PiA9IG51bGxwdHIKKyAgICAg
ICAgLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1lbW9yeUhhbmRsZUFycmF5PiA9IG51bGxwdHIKICNl
bmRpZgogICAgICAgICApOwogCkBAIC0xMzYsNiArMTM5LDcgQEAgY2xhc3MgU2VyaWFsaXplZFNj
cmlwdFZhbHVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4KICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2FzbU1vZHVsZUFycmF5PiBtX3dhc21Nb2R1bGVzQXJyYXk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFdhc21NZW1vcnlIYW5kbGVBcnJheT4gbV93YXNtTWVtb3J5SGFuZGxlc0FycmF5OwogI2Vu
ZGlmCiAgICAgVmVjdG9yPFN0cmluZz4gbV9ibG9iVVJMczsKICAgICBzaXplX3QgbV9tZW1vcnlD
b3N0IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29y
ZUpTQ2xpZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlND
bGllbnREYXRhLmNwcAppbmRleCAwNzY2MDgzODA3NGUyNmViZjQzMWQ1MWE5YWYzMTAxOWM1OWEw
NzY0Li5hMTQzZjMwNGI0YWM5OTVlN2UxMmE0Yjg4NzE0Y2IzNGU2OGExNmY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcApAQCAt
MTM2LDcgKzEzNiw3IEBAIHZvaWQgSlNWTUNsaWVudERhdGE6OmdldEFsbFdvcmxkcyhWZWN0b3I8
UmVmPERPTVdyYXBwZXJXb3JsZD4+JiB3b3JsZHMpCiAgICAgfQogfQogCi12b2lkIEpTVk1DbGll
bnREYXRhOjppbml0Tm9ybWFsV29ybGQoVk0qIHZtKQordm9pZCBKU1ZNQ2xpZW50RGF0YTo6aW5p
dE5vcm1hbFdvcmxkKFZNKiB2bSwgV29ya2VyVGhyZWFkVHlwZSB0eXBlKQogewogICAgIEpTVk1D
bGllbnREYXRhKiBjbGllbnREYXRhID0gbmV3IEpTVk1DbGllbnREYXRhKCp2bSk7CiAgICAgdm0t
PmNsaWVudERhdGEgPSBjbGllbnREYXRhOyAvLyB+Vk0gZGVsZXRlcyB0aGlzIHBvaW50ZXIuCkBA
IC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKFZN
KiB2bSkKICAgICB2bS0+aGVhcC5hZGRNYXJraW5nQ29uc3RyYWludChtYWtlVW5pcXVlPERPTUdD
T3V0cHV0Q29uc3RyYWludD4oKnZtLCAqY2xpZW50RGF0YSkpOwogCiAgICAgY2xpZW50RGF0YS0+
bV9ub3JtYWxXb3JsZCA9IERPTVdyYXBwZXJXb3JsZDo6Y3JlYXRlKCp2bSwgRE9NV3JhcHBlcldv
cmxkOjpUeXBlOjpOb3JtYWwpOwotICAgIHZtLT5tX3R5cGVkQXJyYXlDb250cm9sbGVyID0gYWRv
cHRSZWYobmV3IFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcigpKTsKKyAgICB2bS0+bV90eXBl
ZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xs
ZXIodHlwZSA9PSBXb3JrZXJUaHJlYWRUeXBlOjpEZWRpY2F0ZWRXb3JrZXIgfHwgdHlwZSA9PSBX
b3JrZXJUaHJlYWRUeXBlOjpXb3JrbGV0KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaApp
bmRleCBiODQ0MGU4NzcwZTQ3MjkxZjdlZTIwNjMxOTllYTA1YzNjNGJiMGMxLi4wZGE1MzMyNzA1
MDgwYzQ5MTI3YzM0NGFhMDIxOTMyNWRjNjZjNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5j
bHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUJ1aWx0aW5OYW1lcy5o
IgogI2luY2x1ZGUgIldlYkNvcmVKU0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFk
VHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCkBAIC00MCw3ICs0MSw3IEBAIGNsYXNzIEpTVk1DbGllbnREYXRhIDogcHVibGljIEpTQzo6
Vk06OkNsaWVudERhdGEgewogCiAgICAgdmlydHVhbCB+SlNWTUNsaWVudERhdGEoKTsKICAgICAK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBpbml0Tm9ybWFsV29ybGQoSlNDOjpWTSop
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGluaXROb3JtYWxXb3JsZChKU0M6OlZN
KiwgV29ya2VyVGhyZWFkVHlwZSk7CiAKICAgICBET01XcmFwcGVyV29ybGQmIG5vcm1hbFdvcmxk
KCkgeyByZXR1cm4gKm1fbm9ybWFsV29ybGQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5jcHAKaW5kZXgg
YzE4ZmE4ZTM2NDhhNDY2YmVhMmMxZjhjODkzZDE1M2YwOTg3NDBlZC4uNmQwMTZjODZhYzc5MWU1
NTBhMjE0MjAwZGUzYmQ5YjNlYjgxNzRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwCkBAIC0zNCw3
ICszNCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYkNvcmVUeXBlZEFycmF5Q29u
dHJvbGxlcjo6V2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyKCkgPSBkZWZhdWx0OworV2ViQ29y
ZVR5cGVkQXJyYXlDb250cm9sbGVyOjpXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIoYm9vbCBh
bGxvd0F0b21pY3NXYWl0KQorICAgIDogbV9hbGxvd0F0b21pY3NXYWl0KGFsbG93QXRvbWljc1dh
aXQpCit7Cit9CiAKIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcjo6fldlYkNvcmVUeXBlZEFy
cmF5Q29udHJvbGxlcigpID0gZGVmYXVsdDsKIApAQCAtNTAsNyArNTMsNyBAQCB2b2lkIFdlYkNv
cmVUeXBlZEFycmF5Q29udHJvbGxlcjo6cmVnaXN0ZXJXcmFwcGVyKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iagogCiBib29sIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcjo6aXNBdG9t
aWNzV2FpdEFsbG93ZWRPbkN1cnJlbnRUaHJlYWQoKQogewotICAgIHJldHVybiAhaXNNYWluVGhy
ZWFkKCk7CisgICAgcmV0dXJuIG1fYWxsb3dBdG9taWNzV2FpdDsKIH0KIAogYm9vbCBXZWJDb3Jl
VHlwZWRBcnJheUNvbnRyb2xsZXI6OkpTQXJyYXlCdWZmZXJPd25lcjo6aXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBKU0M6
OlNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIu
aAppbmRleCBmYWFjMjI2MjIxMmU1MzY4YjA4YWMyOTBmZDgwOWJhNjg0YzJkYzYwLi41MTE5YWQx
ZjNhMmVlZDExMDM4NWY1YTI1NDAzYWEyZjU3YTBiYzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaApAQCAt
MzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkNvcmVUeXBlZEFy
cmF5Q29udHJvbGxlciA6IHB1YmxpYyBKU0M6OlR5cGVkQXJyYXlDb250cm9sbGVyIHsKIHB1Ymxp
YzoKLSAgICBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIoKTsKKyAgICBXZWJDb3JlVHlwZWRB
cnJheUNvbnRyb2xsZXIoYm9vbCBhbGxvd0F0b21pY3NXYWl0KTsKICAgICB2aXJ0dWFsIH5XZWJD
b3JlVHlwZWRBcnJheUNvbnRyb2xsZXIoKTsKICAgICAKICAgICBKU0M6OkpTQXJyYXlCdWZmZXIq
IHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkFy
cmF5QnVmZmVyKikgb3ZlcnJpZGU7CkBAIC01Myw2ICs1Myw3IEBAIGNsYXNzIFdlYkNvcmVUeXBl
ZEFycmF5Q29udHJvbGxlciA6IHB1YmxpYyBKU0M6OlR5cGVkQXJyYXlDb250cm9sbGVyIHsKICAg
ICB9OwogCiAgICAgSlNBcnJheUJ1ZmZlck93bmVyIG1fb3duZXI7CisgICAgYm9vbCBtX2FsbG93
QXRvbWljc1dhaXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGMxOWVi
ZTVlMDc5Y2VkZmM4ZmU0ZGI5NDRiYWQ5NmZhMjU5NTk2YWUuLmU3OWMxZDllNGI2YzFjZjZjOWNj
NjcwM2I5MmY0ZjA0YjE3M2U3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC02OTk5LDYgKzY5OTksNyBAQCBzdWIgSXNB
bm5vdGF0ZWRUeXBlCiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nfTsKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57QXRvbVN0cmluZ307CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nfTsKKyAgICByZXR1cm4g
MSBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57QWxsb3dTaGFyZWR9OwogfQogCiBzdWIg
R2V0QW5ub3RhdGVkSURMVHlwZQpAQCAtNzAxMCw2ICs3MDExLDcgQEAgc3ViIEdldEFubm90YXRl
ZElETFR5cGUKICAgICByZXR1cm4gIklETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvciIg
aWYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nfTsK
ICAgICByZXR1cm4gIklETEF0b21TdHJpbmdBZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57QXRvbVN0cmluZ307CiAgICAgcmV0dXJuICJJRExSZXF1aXJlc0V4aXN0aW5nQXRv
bVN0cmluZ0FkYXB0b3IiIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZXF1aXJlc0V4
aXN0aW5nQXRvbVN0cmluZ307CisgICAgcmV0dXJuICJJRExBbGxvd1NoYXJlZEFkYXB0b3IiIGlm
ICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBbGxvd1NoYXJlZH07CiB9CiAKIHN1YiBHZXRC
YXNlSURMVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9J
RExBdHRyaWJ1dGVzLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0
dHJpYnV0ZXMuanNvbgppbmRleCBjOGVjZmYzODZjMjNjZjYyODRlOWFhZTcwNGM0YzZhZjY4NGIy
MDQ5Li40ZTAzZTlmYTRhYTMxYjRjZThiZWRjY2QwYjhjMDI5ZDQzMmY1OWZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgpAQCAt
MjQsOCArMjQsNyBAQAogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsidHlwZSJdLAog
ICAgICAgICAgICAgInN0YW5kYXJkIjogewogICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6
Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jQWxsb3dTaGFyZWQiCi0gICAgICAgICAgICB9LAot
ICAgICAgICAgICAgInVuc3VwcG9ydGVkIjogdHJ1ZQorICAgICAgICAgICAgfQogICAgICAgICB9
LAogICAgICAgICAiQXBwbGVDb3B5cmlnaHQiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxv
d2VkIjogWyJpbnRlcmZhY2UiLCAiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJdCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmlu
ZGV4IDg0MjVlMzAxMGY2NTM2YmMyMjA0YzE4ZTkwNWEyMzFiMjM5ZDBiN2MuLmY4ODExNTAxNmVm
ODY5Yjg2YzgzY2E3MTg4MmViOGQzODAwNjljMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xNjAyLDYgKzE2
MDIsNyBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbl90cmFpbGluZ19kYXNoX2h5cGhlbgogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbGVhZGluZ191bmRlcnNjb3JlX2Z1
bmN0aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX2RvdWJsZV9sZWFkaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb24pOwogc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdHJh
aWxpbmdfdW5kZXJzY29yZV9mdW5jdGlvbl8pOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fZW5jb2RlSW50byk7CiBzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90b1N0cmlu
Zyk7CiAKIC8vIEF0dHJpYnV0ZXMKQEAgLTIzMzMsNiArMjMzNCw3IEBAIHN0YXRpYyBjb25zdCBI
YXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJs
ZWFkaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2xl
YWRpbmdfdW5kZXJzY29yZV9mdW5jdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJf
ZG91YmxlX2xlYWRpbmdfdW5kZXJzY29yZV9mdW5jdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fZG91YmxlX2xlYWRpbmdfdW5kZXJzY29yZV9mdW5jdGlvbiksIChpbnRwdHJfdCkgKDAp
IH0gfSwKICAgICB7ICJ0cmFpbGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uXyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25fdHJhaWxpbmdfdW5kZXJzY29yZV9mdW5jdGlvbl8pLCAoaW50cHRyX3Qp
ICgwKSB9IH0sCisgICAgeyAiZW5jb2RlSW50byIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
ZW5jb2RlSW50byksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJ0b1N0cmluZyIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25fdG9TdHJpbmcpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAjaWYg
RU5BQkxFKENvbmRpdGlvbjEpCiAgICAgeyAiQ09ORElUSU9OQUxfQ09OU1QiLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2lj
LCB7IChsb25nIGxvbmcpKDApIH0gfSwKQEAgLTk0OTcsNiArOTQ5OSwyNiBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdHJhaWxpbmdfdW5kZXJz
Y29yZV9mdW5jdGlvbgogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90cmFpbGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uX0Jv
ZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidHJhaWxpbmdfdW5kZXJzY29y
ZV9mdW5jdGlvbl8iKTsKIH0KIAorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2VuY29kZUludG9Cb2R5KEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQor
eworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3Vt
ZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgYXV0byBkZXN0aW5h
dGlvbiA9IGNvbnZlcnQ8SURMQWxsb3dTaGFyZWRBZGFwdG9yPElETFVpbnQ4QXJyYXk+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dB
cmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImRlc3RpbmF0
aW9uIiwgIlRlc3RPYmplY3QiLCAiZW5jb2RlSW50byIsICJVaW50OEFycmF5Iik7IH0pOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJv
b2xlYW4+KGltcGwuZW5jb2RlSW50byhkZXN0aW5hdGlvbi5yZWxlYXNlTm9uTnVsbCgpKSkpKTsK
K30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
X2VuY29kZUludG8sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9lbmNvZGVJbnRvQm9keT4oKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJlbmNvZGVJbnRvIik7Cit9CisKIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90b1N0cmlu
Z0JvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNz
UGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsCmluZGV4IDQyNzBlZjI1OTIwODA0NWM3MWYyNDAxZWNjMDAyYTczNTk3
NjhjNTAuLmRhM2FjYjMxMTRkODhkYTExZGRmZThlZDM0MGQwODcyNTE4ZjgzZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKQEAgLTQ2
Nyw2ICs0NjcsOCBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93IiB9
OwogICAgIHVuZGVmaW5lZCBfbGVhZGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uKCk7IC8vIE5PVEU6
IFdlYklETCByZW1vdmVzIHRoZSBsZWFkaW5nIHVuZGVyc2NvcmUgc28gdGhpcyBpcyBpbnRlcnBy
ZXRlZCBhcyAibGVhZGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uIgogICAgIHVuZGVmaW5lZCBfX2Rv
dWJsZV9sZWFkaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb24oKTsgLy8gTk9URTogV2ViSURMIHJlbW92
ZXMgdGhlIGxlYWRpbmcgdW5kZXJzY29yZSBzbyB0aGlzIGlzIGludGVycHJldGVkIGFzICJfZG91
YmxlX2xlYWRpbmdfdW5kZXJzY29yZV9mdW5jdGlvbiIKICAgICB1bmRlZmluZWQgdHJhaWxpbmdf
dW5kZXJzY29yZV9mdW5jdGlvbl8oKTsKKworICAgIGJvb2xlYW4gZW5jb2RlSW50byhbQWxsb3dT
aGFyZWRdIFVpbnQ4QXJyYXkgZGVzdGluYXRpb24pOwogfTsKIAogLy8gVGhlIGZvbGxvd2luZyBj
b21tZW50cyBzaG91bGQgbm90IGdlbmVyYXRlIGFueSBjb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVj
b2Rlci5pZGwKaW5kZXggZGIzNGNiMmU4YTY1NGU4MDYyOWUzZTY0MzQ3ZTQ1YmMwN2M1NTQ2MS4u
MjE0YWQ3ZTNiMDYzZWExN2M3OTkxMDYxOWEwYWE0MjdhZDdkNTFhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VGV4dERlY29kZXIuaWRsCkBAIC00MSw1ICs0MSw1IEBAIGRpY3Rpb25hcnkgVGV4dERlY29kZU9w
dGlvbnMgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZW5jb2Rpbmc7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gZmF0YWw7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gaWdub3JlQk9NOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gVVNWU3RyaW5nIGRl
Y29kZShvcHRpb25hbCBCdWZmZXJTb3VyY2U/IGlucHV0LCBvcHRpb25hbCBUZXh0RGVjb2RlT3B0
aW9ucyBvcHRpb25zKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFVTVlN0cmluZyBkZWNvZGUo
b3B0aW9uYWwgW0FsbG93U2hhcmVkXSBCdWZmZXJTb3VyY2U/IGlucHV0LCBvcHRpb25hbCBUZXh0
RGVjb2RlT3B0aW9ucyBvcHRpb25zKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVGV4dERlY29kZXJTdHJlYW1EZWNvZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0
RGVjb2RlclN0cmVhbURlY29kZXIuaWRsCmluZGV4IDQzYzE5ZTdhNjQ0OTZkMmE1ZjUwMTA4N2M5
NWI3NjEwMGZmNGNlMDEuLmQzZWI3ZWRjYzc4YjU4MjJiMmJiZGM0YmNlNDVkNjliM2U4YjQ3YTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2RlclN0cmVhbURlY29kZXIu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2RlclN0cmVhbURlY29kZXIuaWRs
CkBAIC0zMiw2ICszMiw2IEBACiAgICAgY29uc3RydWN0b3IoRE9NU3RyaW5nIGxhYmVsLCBib29s
ZWFuIGZhdGFsLCBib29sZWFuIGlnbm9yZUJPTSk7CiAKICAgICBbUHJpdmF0ZUlkZW50aWZpZXJd
IERPTVN0cmluZyBlbmNvZGluZygpOwotICAgIFtQcml2YXRlSWRlbnRpZmllciwgTWF5VGhyb3dF
eGNlcHRpb25dIERPTVN0cmluZyBkZWNvZGUoQnVmZmVyU291cmNlIHNvdXJjZSk7CisgICAgW1By
aXZhdGVJZGVudGlmaWVyLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGRlY29kZShbQWxs
b3dTaGFyZWRdIEJ1ZmZlclNvdXJjZSBzb3VyY2UpOwogICAgIFtQcml2YXRlSWRlbnRpZmllciwg
TWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBmbHVzaCgpOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2Rlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4
dEVuY29kZXIuaWRsCmluZGV4IDA1ZDgyNmQ4MmIyOTkzZjgxOTg5NjEwYzBlYWQxOTRiMGM2YzRi
OTQuLjZiY2I4OTVlOGIwZGE1MjJiOGI1YjRjNWMyMDZiN2JmNmNjZTdhZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2Rlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1RleHRFbmNvZGVyLmlkbApAQCAtMzksNSArMzksNSBAQAogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcgZW5jb2Rpbmc7CiAKICAgICBbTmV3T2JqZWN0XSBVaW50OEFycmF5IGVu
Y29kZShvcHRpb25hbCBVU1ZTdHJpbmcgaW5wdXQgPSAiIik7Ci0gICAgVGV4dEVuY29kZXJFbmNv
ZGVJbnRvUmVzdWx0IGVuY29kZUludG8oVVNWU3RyaW5nIHNvdXJjZSwgVWludDhBcnJheSBkZXN0
aW5hdGlvbik7CisgICAgVGV4dEVuY29kZXJFbmNvZGVJbnRvUmVzdWx0IGVuY29kZUludG8oVVNW
U3RyaW5nIHNvdXJjZSwgW0FsbG93U2hhcmVkXSBVaW50OEFycmF5IGRlc3RpbmF0aW9uKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUuY3BwCmluZGV4IGVmMWQ4YmNhZGEyNWJjMjVmMTUxN2U3ODg5ZTI0MWMzZTQ5ZTNkYWUu
LjdkYjQ5ZmU0YjMzNjZjYTY2ODNmNGI1NzFkMWI3NWI5OWM1YTQxMTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIFJlZjxEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT4gRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZShjb25zdCBXb3JrZXJQCiB9CiAKIERlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlOjpEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBXb3JrZXJQ
YXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIERlZGljYXRl
ZFdvcmtlclRocmVhZCYgdGhyZWFkLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92
aWRlciogc29ja2V0UHJvdmlkZXIpCi0gICAgOiBXb3JrZXJHbG9iYWxTY29wZShwYXJhbXMsIFdU
Rk1vdmUob3JpZ2luKSwgdGhyZWFkLCBXVEZNb3ZlKHRvcE9yaWdpbiksIGNvbm5lY3Rpb25Qcm94
eSwgc29ja2V0UHJvdmlkZXIpCisgICAgOiBXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJUaHJlYWRU
eXBlOjpEZWRpY2F0ZWRXb3JrZXIsIHBhcmFtcywgV1RGTW92ZShvcmlnaW4pLCB0aHJlYWQsIFdU
Rk1vdmUodG9wT3JpZ2luKSwgY29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlcikKICAgICAs
IG1fbmFtZShwYXJhbXMubmFtZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggNTAyZWM3ZDc3NjM1NWY5NmUwZGU4ZGM4YzQzOTE1ODFm
OTA2ZjYwNy4uNmYwZjYyZDc4M2M5NDgxZGJhYjFlZjllMzhlNTc5ZjQwYWExZDIwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTU5LDggKzU5
LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKFdvcmtlckdsb2JhbFNjb3BlKTsKIAotV29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckds
b2JhbFNjb3BlKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywgUmVmPFNlY3VyaXR5T3Jp
Z2luPiYmIG9yaWdpbiwgV29ya2VyVGhyZWFkJiB0aHJlYWQsIFJlZjxTZWN1cml0eU9yaWdpbj4m
JiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJv
eHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikKLSAgICA6IFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKEpTQzo6Vk06OmNyZWF0ZSgpLCAmdGhyZWFkKQorV29ya2VyR2xvYmFsU2Nv
cGU6Oldvcmtlckdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5cGUgdHlwZSwgY29uc3QgV29ya2Vy
UGFyYW1ldGVycyYgcGFyYW1zLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBXb3JrZXJU
aHJlYWQmIHRocmVhZCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50
OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNv
Y2tldFByb3ZpZGVyKQorICAgIDogV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUodHlwZSwgSlND
OjpWTTo6Y3JlYXRlKCksICZ0aHJlYWQpCiAgICAgLCBtX3VybChwYXJhbXMuc2NyaXB0VVJMKQog
ICAgICwgbV9pZGVudGlmaWVyKHBhcmFtcy5pZGVudGlmaWVyKQogICAgICwgbV91c2VyQWdlbnQo
cGFyYW1zLnVzZXJBZ2VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuaAppbmRleCBkOTIyMWRiOWY1ODY3YTJjMGIyODljMzM4ZDNkNDQyMGY4MzY0NmMwLi43YWIw
OWY2YWYzM2U0NWIyMjM3Mzg2YTMwNjMxMDFiOWU1NmYzZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0xMjYsNyArMTI2LDcgQEAgY2xhc3MgV29y
a2VyR2xvYmFsU2NvcGUgOiBwdWJsaWMgU3VwcGxlbWVudGFibGU8V29ya2VyR2xvYmFsU2NvcGU+
LCBwdWJsaWMgQmFzZTYKICAgICBib29sIHdlYkdMRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
d2ViR0xFbmFibGVkOyB9CiAKIHByb3RlY3RlZDoKLSAgICBXb3JrZXJHbG9iYWxTY29wZShjb25z
dCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBXb3JrZXJUaHJlYWQm
LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rp
b25Qcm94eSosIFNvY2tldFByb3ZpZGVyKik7CisgICAgV29ya2VyR2xvYmFsU2NvcGUoV29ya2Vy
VGhyZWFkVHlwZSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9yaWdpbj4m
JiwgV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xp
ZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciopOwogCiAgICAgdm9pZCBh
cHBseUNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyhjb25zdCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCBmNDQ5YWMwMmJl
ODBjZjQ4ZmI4MjkyYzQyOWFiMmMyZTZiM2ZiMGI2Li4yMzg0YTVhOGM3ZDJhMzAyZWVlNWNiNDA1
ZTEwNWUwMjVjOTg0M2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtMzcsOCArMzcsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSk7CiAKLVdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZShSZWY8SlNDOjpWTT4mJiB2bSwgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiB0
aHJlYWQpCi0gICAgOiBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXI+KFdURk1vdmUodm0pLCB0aGlzKSkKK1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
OjpXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShXb3JrZXJUaHJlYWRUeXBlIHR5cGUsIFJlZjxK
U0M6OlZNPiYmIHZtLCBXb3JrZXJPcldvcmtsZXRUaHJlYWQqIHRocmVhZCkKKyAgICA6IG1fc2Ny
aXB0KG1ha2VVbmlxdWU8V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4odHlwZSwgV1RG
TW92ZSh2bSksIHRoaXMpKQogICAgICwgbV90aHJlYWQodGhyZWFkKQogICAgICwgbV9pbnNwZWN0
b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMp
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZS5oCmluZGV4IGYwYzkwYzIyMTliZmU0OTI2YzgyODcxMzY2YzM4OTA5YzYxZjc0ODUu
LjZjMjQ0YTBjNDI3ZWUxYzhjNjVmZGNjNzY1OTUyZjg3N2ZkOWIxNmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZFR5cGUuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Nyw3ICs2OCw3IEBAIGNsYXNzIFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHB1YmxpYyBSZWZD
b3VuCiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZSgpIHsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoUmVmPEpTQzo6Vk0+JiYsIFdvcmtlck9yV29ya2xldFRo
cmVhZCopOworICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5cGUs
IFJlZjxKU0M6OlZNPiYmLCBXb3JrZXJPcldvcmtsZXRUaHJlYWQqKTsKIAogICAgIC8vIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuCiAgICAgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29u
c3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29y
a2xldFNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJP
cldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA0MDFkNWYyZjQwYjdiN2JkZThlNjMz
NjYyYWQzMWZiMWNkM2YyODYxLi5jZDRlYzI0NjgyNTI1YWFiYzY0MmQ4NzdhMGRhMDExZWJkZTEx
NDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JX
b3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTUwLDE3ICs1MCwxNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLVdvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXI6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIoUmVmPFZNPiYmIHZt
LCBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSogZ2xvYmFsU2NvcGUpCitXb3JrZXJPcldvcmts
ZXRTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKFdvcmtl
clRocmVhZFR5cGUgdHlwZSwgUmVmPFZNPiYmIHZtLCBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSogZ2xvYmFsU2NvcGUpCiAgICAgOiBtX3ZtKFdURk1vdmUodm0pKQogICAgICwgbV9nbG9iYWxT
Y29wZShnbG9iYWxTY29wZSkKICAgICAsIG1fZ2xvYmFsU2NvcGVXcmFwcGVyKCptX3ZtKQogewog
ICAgIG1fdm0tPmhlYXAuYWNxdWlyZUFjY2VzcygpOyAvLyBJdCdzIG5vdCBjbGVhciB0aGF0IHdl
IGhhdmUgZ29vZCBkaXNjaXBsaW5lIGZvciBoZWFwIGFjY2Vzcywgc28gdHVybiBpdCBvbiBwZXJt
YW5lbnRseS4KLSAgICBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKG1fdm0uZ2V0KCkp
OworICAgIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29ybGQobV92bS5nZXQoKSwgdHlwZSk7
CiB9CiAKLVdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6Oldvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGdsb2JhbFNjb3BlKQot
ICAgIDogV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcihKU0M6OlZNOjpjcmVhdGUoKSwg
Z2xvYmFsU2NvcGUpCitXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJPcldv
cmtsZXRTY3JpcHRDb250cm9sbGVyKFdvcmtlclRocmVhZFR5cGUgdHlwZSwgV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUqIGdsb2JhbFNjb3BlKQorICAgIDogV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcih0eXBlLCBKU0M6OlZNOjpjcmVhdGUoKSwgZ2xvYmFsU2NvcGUpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmgKaW5kZXggZWU1Nzk3YmRjMDZiMmE4NzUwYzg4MjEwZTcwMmNiNTM2MDhl
NGU5NC4uYzQ5MzAxYWVkM2RkMDg5ZGE3OTczMjc2MGNhZjJmN2I2NGRiMTFiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250
cm9sbGVyLmgKQEAgLTI2LDYgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJX
b3JrZXJUaHJlYWRUeXBlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1J1bkxvb3BUaW1lci5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CkBAIC01MSw4ICs1Miw4IEBAIGNsYXNzIFdvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIoUmVmPEpTQzo6Vk0+JiYsIFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKik7Ci0gICAgZXhwbGljaXQgV29ya2VyT3JXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlcihXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSopOworICAgIFdvcmtlck9y
V29ya2xldFNjcmlwdENvbnRyb2xsZXIoV29ya2VyVGhyZWFkVHlwZSwgUmVmPEpTQzo6Vk0+JiYs
IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKik7CisgICAgZXhwbGljaXQgV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcihXb3JrZXJUaHJlYWRUeXBlLCBXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSopOwogICAgIH5Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKCk7CiAKICAg
ICB2b2lkIHJlbGVhc2VIZWFwQWNjZXNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4MzA2NWJlYTFjNjNmOTE3NTYyMzFhMjdlNDQ4Yjlk
YTJiOWRjOWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZFR5cGUuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBXb3JrZXJUaHJlYWRUeXBlIDog
dWludDhfdCB7CisgICAgTWFpbiwKKyAgICBXb3JrbGV0LAorICAgIERlZGljYXRlZFdvcmtlciwK
KyAgICBTZXJ2aWNlV29ya2VyLAorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmNwcAppbmRleCBjZTU3OWY3YzUzMTg0MDM3MjFjMWEzM2NiOTA1MWE4ZTQ1MDVm
ZGQ4Li44ZDczZmYzNTViYTEwYjhiMTI1MDFhOTY5NTNiZjRmNDA4MTU1YTNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmNwcApAQCAtNTIsNyArNTIsNyBAQCBSZWY8U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlPiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZShjb25zdCBTZXJ2aWNlV29yawog
fQogCiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShj
b25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIGNvbnN0IFdvcmtlclBhcmFtZXRl
cnMmIHBhcmFtcywgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgU2VydmljZVdvcmtlclRo
cmVhZCYgdGhyZWFkLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29j
a2V0UHJvdmlkZXIpCi0gICAgOiBXb3JrZXJHbG9iYWxTY29wZShwYXJhbXMsIFdURk1vdmUob3Jp
Z2luKSwgdGhyZWFkLCBXVEZNb3ZlKHRvcE9yaWdpbiksIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0
UHJvdmlkZXIpCisgICAgOiBXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJUaHJlYWRUeXBlOjpTZXJ2
aWNlV29ya2VyLCBwYXJhbXMsIFdURk1vdmUob3JpZ2luKSwgdGhyZWFkLCBXVEZNb3ZlKHRvcE9y
aWdpbiksIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIpCiAgICAgLCBtX2NvbnRleHRE
YXRhKGNyb3NzVGhyZWFkQ29weShkYXRhKSkKICAgICAsIG1fcmVnaXN0cmF0aW9uKFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb246OmdldE9yQ3JlYXRlKCp0aGlzLCBuYXZpZ2F0b3IoKS5zZXJ2aWNl
V29ya2VyKCksIFdURk1vdmUobV9jb250ZXh0RGF0YS5yZWdpc3RyYXRpb24pKSkKICAgICAsIG1f
Y2xpZW50cyhTZXJ2aWNlV29ya2VyQ2xpZW50czo6Y3JlYXRlKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCBkMDI4MzQyMGFkNzMxN2Fm
YTk5N2EwZTQ4ZTJhODc1NTVjYjcyNGRkLi43YjAwOTkzMTVjNjQzNDgwOGZiYWQ2ZmIwMzE1YzQz
NDdjMmRjYTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxT
Y29wZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdv
cmtsZXRHbG9iYWxTY29wZSk7CiBzdGF0aWMgc3RkOjphdG9taWM8dW5zaWduZWQ+IGdOdW1iZXJP
ZldvcmtsZXRHbG9iYWxTY29wZXMgeyAwIH07CiAKIFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xl
dEdsb2JhbFNjb3BlKFdvcmtlck9yV29ya2xldFRocmVhZCYgdGhyZWFkLCBjb25zdCBXb3JrbGV0
UGFyYW1ldGVycyYgcGFyYW1ldGVycykKLSAgICA6IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KEpTQzo6Vk06OmNyZWF0ZSgpLCAmdGhyZWFkKQorICAgIDogV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUoV29ya2VyVGhyZWFkVHlwZTo6V29ya2xldCwgSlNDOjpWTTo6Y3JlYXRlKCksICZ0aHJl
YWQpCiAgICAgLCBtX3RvcE9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpCiAg
ICAgLCBtX3VybChwYXJhbWV0ZXJzLndpbmRvd1VSTCkKICAgICAsIG1fanNSdW50aW1lRmxhZ3Mo
cGFyYW1ldGVycy5qc1J1bnRpbWVGbGFncykKQEAgLTYyLDcgKzYyLDcgQEAgV29ya2xldEdsb2Jh
bFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyT3JXb3JrbGV0VGhyZWFkJiB0aHJlYWQs
IGNvbnN0IFdvcmsKIH0KIAogV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8SlNDOjpWTT4mJiB2bSwgU2NyaXB0U291cmNlQ29kZSYm
IGNvZGUpCi0gICAgOiBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShXVEZNb3ZlKHZtKSwgbnVs
bHB0cikKKyAgICA6IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5cGU6
OldvcmtsZXQsIFdURk1vdmUodm0pLCBudWxscHRyKQogICAgICwgbV9kb2N1bWVudChtYWtlV2Vh
a1B0cihkb2N1bWVudCkpCiAgICAgLCBtX3RvcE9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
VW5pcXVlKCkpCiAgICAgLCBtX3VybChjb2RlLnVybCgpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdmMTU0OTdkNGJiMTQx
MzJjZjE3ZmRlYzZmNjVhMWEzZmFiYmYxNGMuLmQxZWVjMGQyZjUzNTUyOWI0NGU4ZDRkNGE4MmI4
M2NkZTU3OTI3MWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMC0xMS0xNiAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBXZWJB
c3NlbWJseS5NZW1vcnkgd2l0aCBzaGFyZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxODY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICoganMvZG9tL3Jlc291cmNlcy93ZWJhc3NlbWJseS1tZW1vcnkt
bm9ybWFsLWZhaWwtd29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vcmVzb3VyY2Vz
L3dlYmFzc2VtYmx5LW1lbW9yeS1zaGFyZWQtd29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKG9u
bWVzc2FnZSk6CisgICAgICAgICoganMvZG9tL3dlYmFzc2VtYmx5LW1lbW9yeS1ub3JtYWwtZmFp
bC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS93ZWJhc3NlbWJseS1tZW1v
cnktbm9ybWFsLWZhaWwuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvZG9tL3dlYmFzc2VtYmx5
LW1lbW9yeS1zaGFyZWQtYmFzaWMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9k
b20vd2ViYXNzZW1ibHktbWVtb3J5LXNoYXJlZC1iYXNpYy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBqcy9kb20vd2ViYXNzZW1ibHktbWVtb3J5LXNoYXJlZC1mYWlsLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICoganMvZG9tL3dlYmFzc2VtYmx5LW1lbW9yeS1zaGFyZWQtZmFpbC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9uczoKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLW1lbW9yeS1zdHJ1Y3R1cmVk
LWNsb25lLmpzOiBBZGRlZC4KKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZSk6CisgICAgICAgIChh
c3luYyBzdGFydFRlc3RzKToKKyAgICAgICAgKHRlc3RTaGFyZWRXZWJBc3NlbWJseU1lbW9yeSk6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvc2hhcmVkLW1lbW9yeS1zdHJ1Y3R1cmVkLWNs
b25lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvc2hh
cmVkLW1lbW9yeS1zdHJ1Y3R1cmVkLWNsb25lLmh0bWw6IEFkZGVkLgorCiAyMDIwLTExLTE2ICBZ
dXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wb3J0IGxhdGVz
dCB3cHQvd2FzbSB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggN2MwODY0
NmZiYWMwMjg5ZDAyODZlN2IzZmQ1ZTQyMGM3ZjdmMTYyOS4uZGNiNTU3NzhlNDYyMzE0MzgzNWFm
YmEzMzI3OWEzZWU3YjFjZmY4MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMjAtMTEtMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgV2ViQXNzZW1ibHkuTWVtb3J5IHdpdGggc2hh
cmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg2
OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9k
ZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWFnZW50LWZvcm1hbGlzbS9yZXF1
aXJlcy1zdWNjZXNzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci1zaGFyZWQudGVudGF0aXZl
LmFueS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNh
cGkvbWVtb3J5L2NvbnN0cnVjdG9yLXNoYXJlZC50ZW50YXRpdmUuYW55Lndvcmtlci1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2Nv
bnN0cnVjdG9yLmFueS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9ncm93LmFueS1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVt
b3J5L2dyb3cuYW55Lndvcmtlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvYnVmZmVyLWludGVyZmFjZS9h
dWRpb2J1ZmZlci1jb3B5LWNoYW5uZWwtZXhwZWN0ZWQudHh0OgorCiAyMDIwLTExLTE2ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wb3J0IGxhdGVzdCB3
cHQvd2FzbSB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwt
Mi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWFnZW50LWZvcm1hbGlzbS9yZXF1aXJl
cy1zdWNjZXNzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3Np
bmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWFnZW50LWZvcm1hbGlz
bS9yZXF1aXJlcy1zdWNjZXNzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IDBiOTg2MGNj
YzUzNDRmNTJkZDc4NDUyMTBiOWQ0MjNjMjVjMTQyODkuLjU1OWYwZmU0MjI5NmY2YWNhNGEwZmEw
NTI3NjI5MTNlNjhjNzRkMzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1v
ZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1hZ2VudC1mb3JtYWxpc20vcmVx
dWlyZXMtc3VjY2Vzcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcv
cHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtYWdlbnQt
Zm9ybWFsaXNtL3JlcXVpcmVzLXN1Y2Nlc3MuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTEs
MyArMSwzIEBACiAKLUZBSUwgW1tDYW5CbG9ja11dIGluIGEgRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUgVHlwZWQgYXJyYXkgZm9yIHdhaXQvbm90aWZ5IG11c3Qgd3JhcCBhIFNoYXJlZEFycmF5
QnVmZmVyLgorUEFTUyBbW0NhbkJsb2NrXV0gaW4gYSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLXNoYXJlZC50ZW50YXRpdmUuYW55LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9qc2FwaS9tZW1vcnkvY29uc3RydWN0b3Itc2hhcmVkLnRlbnRhdGl2ZS5hbnktZXhwZWN0
ZWQudHh0CmluZGV4IDY1NTFiZTA2YmIwY2FmNmFlMzA2YTY0MmJjNWIxOWFkMTdhNTJkMzkuLjU3
MDVmMzI3N2I2MTk2YTkwOTViNmUyM2VkMTI2MGRhY2NmZDNjNjcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkv
Y29uc3RydWN0b3Itc2hhcmVkLnRlbnRhdGl2ZS5hbnktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkv
Y29uc3RydWN0b3Itc2hhcmVkLnRlbnRhdGl2ZS5hbnktZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEs
NSBAQAogCi1GQUlMIFNoYXJlZCBtZW1vcnkgd2l0aG91dCBtYXhpbXVtIGFzc2VydF90aHJvd3Nf
anM6IGZ1bmN0aW9uICIoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgImluaXRpYWwiOiAx
MCwgInNoYXJlZCI6IHRydWUgfSkiIGRpZCBub3QgdGhyb3cKLUZBSUwgT3JkZXIgb2YgZXZhbHVh
dGlvbiBmb3IgZGVzY3JpcHRvciAod2l0aCBzaGFyZWQpIGFzc2VydF9hcnJheV9lcXVhbHM6IGxl
bmd0aHMgZGlmZmVyLCBleHBlY3RlZCBhcnJheSBbImluaXRpYWwiLCAiaW5pdGlhbCB2YWx1ZU9m
IiwgIm1heGltdW0iLCAibWF4aW11bSB2YWx1ZU9mIiwgInNoYXJlZCJdIGxlbmd0aCA1LCBnb3Qg
WyJpbml0aWFsIiwgImluaXRpYWwgdmFsdWVPZiIsICJtYXhpbXVtIiwgIm1heGltdW0gdmFsdWVP
ZiJdIGxlbmd0aCA0Ci1GQUlMIFNoYXJlZCBtZW1vcnkgYXNzZXJ0X2VxdWFsczogdW5kZWZpbmVk
OiBjb25zdHJ1Y3RvciBleHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UKK1BBU1MgU2hhcmVkIG1l
bW9yeSB3aXRob3V0IG1heGltdW0KK1BBU1MgT3JkZXIgb2YgZXZhbHVhdGlvbiBmb3IgZGVzY3Jp
cHRvciAod2l0aCBzaGFyZWQpCitQQVNTIFNoYXJlZCBtZW1vcnkKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9y
eS9jb25zdHJ1Y3Rvci1zaGFyZWQudGVudGF0aXZlLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21l
bW9yeS9jb25zdHJ1Y3Rvci1zaGFyZWQudGVudGF0aXZlLmFueS53b3JrZXItZXhwZWN0ZWQudHh0
CmluZGV4IDY1NTFiZTA2YmIwY2FmNmFlMzA2YTY0MmJjNWIxOWFkMTdhNTJkMzkuLjU3MDVmMzI3
N2I2MTk2YTkwOTViNmUyM2VkMTI2MGRhY2NmZDNjNjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvY29uc3Ry
dWN0b3Itc2hhcmVkLnRlbnRhdGl2ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5
L2NvbnN0cnVjdG9yLXNoYXJlZC50ZW50YXRpdmUuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAg
LTEsNSArMSw1IEBACiAKLUZBSUwgU2hhcmVkIG1lbW9yeSB3aXRob3V0IG1heGltdW0gYXNzZXJ0
X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyAiaW5p
dGlhbCI6IDEwLCAic2hhcmVkIjogdHJ1ZSB9KSIgZGlkIG5vdCB0aHJvdwotRkFJTCBPcmRlciBv
ZiBldmFsdWF0aW9uIGZvciBkZXNjcmlwdG9yICh3aXRoIHNoYXJlZCkgYXNzZXJ0X2FycmF5X2Vx
dWFsczogbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsiaW5pdGlhbCIsICJpbml0aWFs
IHZhbHVlT2YiLCAibWF4aW11bSIsICJtYXhpbXVtIHZhbHVlT2YiLCAic2hhcmVkIl0gbGVuZ3Ro
IDUsIGdvdCBbImluaXRpYWwiLCAiaW5pdGlhbCB2YWx1ZU9mIiwgIm1heGltdW0iLCAibWF4aW11
bSB2YWx1ZU9mIl0gbGVuZ3RoIDQKLUZBSUwgU2hhcmVkIG1lbW9yeSBhc3NlcnRfZXF1YWxzOiB1
bmRlZmluZWQ6IGNvbnN0cnVjdG9yIGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQorUEFTUyBT
aGFyZWQgbWVtb3J5IHdpdGhvdXQgbWF4aW11bQorUEFTUyBPcmRlciBvZiBldmFsdWF0aW9uIGZv
ciBkZXNjcmlwdG9yICh3aXRoIHNoYXJlZCkKK1BBU1MgU2hhcmVkIG1lbW9yeQogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNh
cGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9y
LmFueS1leHBlY3RlZC50eHQKaW5kZXggNWY2ZDVlNzE0ZGE0MjgzZTM1YTU5MjdhYWYzMzk4YzFi
YzJmZTBkMi4uNDQzNmM5NjhiNDJjYzYyNjg0YWIyMjI5NjEwYzU2MDE5ZDhjNzMyNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pz
YXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5hbnktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvY29uc3Ry
dWN0b3IuYW55LWV4cGVjdGVkLnR4dApAQCAtMjIsNSArMjIsNSBAQCBQQVNTIFByb3h5IGRlc2Ny
aXB0b3IKIFBBU1MgT3JkZXIgb2YgZXZhbHVhdGlvbiBmb3IgZGVzY3JpcHRvcgogUEFTUyBaZXJv
IGluaXRpYWwKIFBBU1MgTm9uLXplcm8gaW5pdGlhbAotRkFJTCBTdHJheSBhcmd1bWVudCBXZWJB
c3NlbWJseS5NZW1vcnkgZXhwZWN0cyBleGFjdGx5IG9uZSBhcmd1bWVudAorUEFTUyBTdHJheSBh
cmd1bWVudAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFueS53b3JrZXItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNt
L2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCA1
ZjZkNWU3MTRkYTQyODNlMzVhNTkyN2FhZjMzOThjMWJjMmZlMGQyLi40NDM2Yzk2OGI0MmNjNjI2
ODRhYjIyMjk2MTBjNTYwMTlkOGM3MzI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFu
eS53b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvY29uc3RydWN0b3IuYW55Lndvcmtlci1l
eHBlY3RlZC50eHQKQEAgLTIyLDUgKzIyLDUgQEAgUEFTUyBQcm94eSBkZXNjcmlwdG9yCiBQQVNT
IE9yZGVyIG9mIGV2YWx1YXRpb24gZm9yIGRlc2NyaXB0b3IKIFBBU1MgWmVybyBpbml0aWFsCiBQ
QVNTIE5vbi16ZXJvIGluaXRpYWwKLUZBSUwgU3RyYXkgYXJndW1lbnQgV2ViQXNzZW1ibHkuTWVt
b3J5IGV4cGVjdHMgZXhhY3RseSBvbmUgYXJndW1lbnQKK1BBU1MgU3RyYXkgYXJndW1lbnQKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
YXNtL2pzYXBpL21lbW9yeS9ncm93LmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2dyb3cuYW55LWV4
cGVjdGVkLnR4dAppbmRleCA0MDA5ZjZhZWIyZjhlNzBjMThiMDAzZjA2ZjhjMDc1YWYyNDQ0NzYz
Li5hNWRlNjBkZDYyODA2NjMyNTA3Y2ZmYWE1NjVhMmRhZDg5YjdjZjBlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVt
b3J5L2dyb3cuYW55LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2dyb3cuYW55LWV4cGVjdGVkLnR4
dApAQCAtMTcsNSArMTcsNSBAQCBQQVNTIE91dC1vZi1yYW5nZSBhcmd1bWVudDogNjg3MTk0NzY3
MzYKIFBBU1MgT3V0LW9mLXJhbmdlIGFyZ3VtZW50OiAiMHgxMDAwMDAwMDAiCiBQQVNTIE91dC1v
Zi1yYW5nZSBhcmd1bWVudDogb2JqZWN0ICJbb2JqZWN0IE9iamVjdF0iCiBQQVNTIFN0cmF5IGFy
Z3VtZW50Ci1GQUlMIEdyb3dpbmcgc2hhcmVkIG1lbW9yeSBkb2VzIG5vdCBkZXRhY2ggb2xkIGJ1
ZmZlciBhc3NlcnRfZXF1YWxzOiBCdWZmZXIgYmVmb3JlIGdyb3dpbmc6IGNvbnN0cnVjdG9yIGV4
cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQorUEFTUyBHcm93aW5nIHNoYXJlZCBtZW1vcnkgZG9l
cyBub3QgZGV0YWNoIG9sZCBidWZmZXIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9ncm93LmFueS53b3Jr
ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9ncm93LmFueS53b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4
IDQwMDlmNmFlYjJmOGU3MGMxOGIwMDNmMDZmOGMwNzVhZjI0NDQ3NjMuLmE1ZGU2MGRkNjI4MDY2
MzI1MDdjZmZhYTU2NWEyZGFkODliN2NmMGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnkud29y
a2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2dyb3cuYW55Lndvcmtlci1leHBlY3RlZC50eHQK
QEAgLTE3LDUgKzE3LDUgQEAgUEFTUyBPdXQtb2YtcmFuZ2UgYXJndW1lbnQ6IDY4NzE5NDc2NzM2
CiBQQVNTIE91dC1vZi1yYW5nZSBhcmd1bWVudDogIjB4MTAwMDAwMDAwIgogUEFTUyBPdXQtb2Yt
cmFuZ2UgYXJndW1lbnQ6IG9iamVjdCAiW29iamVjdCBPYmplY3RdIgogUEFTUyBTdHJheSBhcmd1
bWVudAotRkFJTCBHcm93aW5nIHNoYXJlZCBtZW1vcnkgZG9lcyBub3QgZGV0YWNoIG9sZCBidWZm
ZXIgYXNzZXJ0X2VxdWFsczogQnVmZmVyIGJlZm9yZSBncm93aW5nOiBjb25zdHJ1Y3RvciBleHBl
Y3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UKK1BBU1MgR3Jvd2luZyBzaGFyZWQgbWVtb3J5IGRvZXMg
bm90IGRldGFjaCBvbGQgYnVmZmVyCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9i
dWZmZXItaW50ZXJmYWNlL2F1ZGlvYnVmZmVyLWNvcHktY2hhbm5lbC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1h
dWRpby1hcGkvdGhlLWF1ZGlvYnVmZmVyLWludGVyZmFjZS9hdWRpb2J1ZmZlci1jb3B5LWNoYW5u
ZWwtZXhwZWN0ZWQudHh0CmluZGV4IDA4ZDUwZjhiNTFmZTc0MGE3NjAwMTI4NmU0OTlkYmRiMDVl
YmViNGIuLjM3OTM0ZmVjZjM2OTQxNGFmZWZmYTc2NWY0NTlkYWM4ZTA0ZjE5YzggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8v
dGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9idWZmZXItaW50ZXJmYWNlL2F1ZGlvYnVmZmVyLWNvcHkt
Y2hhbm5lbC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb2J1ZmZlci1pbnRl
cmZhY2UvYXVkaW9idWZmZXItY29weS1jaGFubmVsLWV4cGVjdGVkLnR4dApAQCAtMTksOSArMTks
OSBAQCBQQVNTICAgNDogYnVmZmVyLmNvcHlGcm9tQ2hhbm5lbCh4LCAzKSB0aHJldyBJbmRleFNp
emVFcnJvcjogIk5vdCBhIHZhbGlkIGNoYW5uZQogUEFTUyAgIDU6IGJ1ZmZlci5jb3B5RnJvbUNo
YW5uZWwoeCwgMCwgLTEpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uLgogUEFTUyAgIDY6IGJ1
ZmZlci5jb3B5RnJvbUNoYW5uZWwoeCwgMCwgMTYpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9u
LgogUEFTUyAgIDc6IGJ1ZmZlci5jb3B5RnJvbUNoYW5uZWwoeCwgMykgdGhyZXcgSW5kZXhTaXpl
RXJyb3I6ICJOb3QgYSB2YWxpZCBjaGFubmVsTnVtYmVyLiIuCi1GQUlMIFggODogYnVmZmVyLmNv
cHlGcm9tQ2hhbm5lbChTaGFyZWRBcnJheUJ1ZmZlciB2aWV3LCAwKSBkaWQgbm90IHRocm93IGFu
IGV4Y2VwdGlvbi4gYXNzZXJ0X3RydWU6IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFgg
OTogYnVmZmVyLmNvcHlGcm9tQ2hhbm5lbChTaGFyZWRBcnJheUJ1ZmZlciB2aWV3LCAwLCAwKSBk
aWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4gYXNzZXJ0X3RydWU6IGV4cGVjdGVkIHRydWUgZ290
IGZhbHNlCi1GQUlMIDwgW2NvcHlGcm9tLWV4Y2VwdGlvbnNdIDIgb3V0IG9mIDExIGFzc2VydGlv
bnMgd2VyZSBmYWlsZWQuIGFzc2VydF90cnVlOiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorUEFT
UyAgIDg6IGJ1ZmZlci5jb3B5RnJvbUNoYW5uZWwoU2hhcmVkQXJyYXlCdWZmZXIgdmlldywgMCkg
dGhyZXcgVHlwZUVycm9yOiAiQXJndW1lbnQgMSAoJ2Rlc3RpbmF0aW9uJykgdG8gQXVkaW9CdWZm
ZXIuY29weUZyb21DaGFubmVsIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgRmxvYXQzMkFycmF5Ii4K
K1BBU1MgICA5OiBidWZmZXIuY29weUZyb21DaGFubmVsKFNoYXJlZEFycmF5QnVmZmVyIHZpZXcs
IDAsIDApIHRocmV3IFR5cGVFcnJvcjogIkFyZ3VtZW50IDEgKCdkZXN0aW5hdGlvbicpIHRvIEF1
ZGlvQnVmZmVyLmNvcHlGcm9tQ2hhbm5lbCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEZsb2F0MzJB
cnJheSIuCitQQVNTIDwgW2NvcHlGcm9tLWV4Y2VwdGlvbnNdIEFsbCBhc3NlcnRpb25zIHBhc3Nl
ZC4gKHRvdGFsIDExIGFzc2VydGlvbnMpCiBQQVNTID4gW2NvcHlUby1leGNlcHRpb25zXQogUEFT
UyAgIEF1ZGlvQnVmZmVyLnByb3RvdHlwZS5jb3B5VG9DaGFubmVsIGRvZXMgZXhpc3QuCiBQQVNT
ICAgMDogYnVmZmVyLmNvcHlUb0NoYW5uZWwobnVsbCwgMCkgdGhyZXcgVHlwZUVycm9yOiAiQXJn
dW1lbnQgMSAoJ3NvdXJjZScpIHRvIEF1ZGlvQnVmZmVyLmNvcHlUb0NoYW5uZWwgbXVzdCBiZSBh
biBpbnN0YW5jZSBvZiBGbG9hdDMyQXJyYXkiLgpAQCAtMzEsOSArMzEsOSBAQCBQQVNTICAgMzog
YnVmZmVyLmNvcHlUb0NoYW5uZWwoeCwgMykgdGhyZXcgSW5kZXhTaXplRXJyb3I6ICJOb3QgYSB2
YWxpZCBjaGFubmVsTgogUEFTUyAgIDQ6IGJ1ZmZlci5jb3B5VG9DaGFubmVsKHgsIDAsIC0xKSBk
aWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4KIFBBU1MgICA1OiBidWZmZXIuY29weVRvQ2hhbm5l
bCh4LCAwLCAxNikgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24uCiBQQVNTICAgNjogYnVmZmVy
LmNvcHlUb0NoYW5uZWwoeCwgMykgdGhyZXcgSW5kZXhTaXplRXJyb3I6ICJOb3QgYSB2YWxpZCBj
aGFubmVsTnVtYmVyLiIuCi1GQUlMIFggNzogYnVmZmVyLmNvcHlUb0NoYW5uZWwoU2hhcmVkQXJy
YXlCdWZmZXIgdmlldywgMCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24uIGFzc2VydF90cnVl
OiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBYIDg6IGJ1ZmZlci5jb3B5VG9DaGFubmVs
KFNoYXJlZEFycmF5QnVmZmVyIHZpZXcsIDAsIDApIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9u
LiBhc3NlcnRfdHJ1ZTogZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgPCBbY29weVRvLWV4
Y2VwdGlvbnNdIDIgb3V0IG9mIDEwIGFzc2VydGlvbnMgd2VyZSBmYWlsZWQuIGFzc2VydF90cnVl
OiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorUEFTUyAgIDc6IGJ1ZmZlci5jb3B5VG9DaGFubmVs
KFNoYXJlZEFycmF5QnVmZmVyIHZpZXcsIDApIHRocmV3IFR5cGVFcnJvcjogIkFyZ3VtZW50IDEg
KCdzb3VyY2UnKSB0byBBdWRpb0J1ZmZlci5jb3B5VG9DaGFubmVsIG11c3QgYmUgYW4gaW5zdGFu
Y2Ugb2YgRmxvYXQzMkFycmF5Ii4KK1BBU1MgICA4OiBidWZmZXIuY29weVRvQ2hhbm5lbChTaGFy
ZWRBcnJheUJ1ZmZlciB2aWV3LCAwLCAwKSB0aHJldyBUeXBlRXJyb3I6ICJBcmd1bWVudCAxICgn
c291cmNlJykgdG8gQXVkaW9CdWZmZXIuY29weVRvQ2hhbm5lbCBtdXN0IGJlIGFuIGluc3RhbmNl
IG9mIEZsb2F0MzJBcnJheSIuCitQQVNTIDwgW2NvcHlUby1leGNlcHRpb25zXSBBbGwgYXNzZXJ0
aW9ucyBwYXNzZWQuICh0b3RhbCAxMCBhc3NlcnRpb25zKQogUEFTUyA+IFtjb3B5RnJvbS12YWxp
ZGF0ZV0KIFBBU1MgICBidWZmZXIuY29weUZyb21DaGFubmVsKGRzdDgsIDApIGlzIGlkZW50aWNh
bCB0byB0aGUgYXJyYXkgWzEsMiwzLDQsNSw2LDcsOF0uCiBQQVNTICAgYnVmZmVyLmNvcHlGcm9t
Q2hhbm5lbChkc3Q4LCAxKSBpcyBpZGVudGljYWwgdG8gdGhlIGFycmF5IFsyLDMsNCw1LDYsNyw4
LDldLgpAQCAtNjAsNSArNjAsNSBAQCBQQVNTICAgYnVmZmVyLmNvcHlUb0NoYW5uZWwoc3JjMTAs
IDAsIDUpIGlzIGlkZW50aWNhbCB0byB0aGUgYXJyYXkgWy0xLC0xLC0xLC0xLAogUEFTUyAgIGJ1
ZmZlci5jb3B5VG9DaGFubmVsKHNyYzEwLCAxLCA1KSBpcyBpZGVudGljYWwgdG8gdGhlIGFycmF5
IFstMSwtMSwtMSwtMSwtMSwxLDIsMyw0LDUsNiw3LDgsOSwxMCwtMS4uLl0uCiBQQVNTICAgYnVm
ZmVyLmNvcHlUb0NoYW5uZWwoc3JjMTAsIDIsIDUpIGlzIGlkZW50aWNhbCB0byB0aGUgYXJyYXkg
Wy0xLC0xLC0xLC0xLC0xLDEsMiwzLDQsNSw2LDcsOCw5LDEwLC0xLi4uXS4KIFBBU1MgPCBbY29w
eVRvLXZhbGlkYXRlXSBBbGwgYXNzZXJ0aW9ucyBwYXNzZWQuICh0b3RhbCAxMCBhc3NlcnRpb25z
KQotRkFJTCAjIEFVRElUIFRBU0sgUlVOTkVSIEZJTklTSEVEOiAyIG91dCBvZiA1IHRhc2tzIHdl
cmUgZmFpbGVkLiBhc3NlcnRfdHJ1ZTogZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK1BBU1MgIyBB
VURJVCBUQVNLIFJVTk5FUiBGSU5JU0hFRDogNSB0YXNrcyByYW4gc3VjY2Vzc2Z1bGx5LgogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vcmVzb3VyY2VzL3dlYmFzc2VtYmx5LW1lbW9y
eS1ub3JtYWwtZmFpbC13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9qcy9kb20vcmVzb3VyY2VzL3dl
YmFzc2VtYmx5LW1lbW9yeS1ub3JtYWwtZmFpbC13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY5ZGUy
OWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5MQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvZG9tL3Jlc291cmNlcy93ZWJhc3NlbWJseS1tZW1vcnktc2hhcmVkLXdvcmtlci5qcyBi
L0xheW91dFRlc3RzL2pzL2RvbS9yZXNvdXJjZXMvd2ViYXNzZW1ibHktbWVtb3J5LXNoYXJlZC13
b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ2OGI1NzZkN2ZhZGRmYTBiYTdiM2NmYzYxMzIzMDM0NDg0
NWFiNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9yZXNvdXJjZXMvd2Vi
YXNzZW1ibHktbWVtb3J5LXNoYXJlZC13b3JrZXIuanMKQEAgLTAsMCArMSw5IEBACitvbm1lc3Nh
Z2UgPSBmdW5jdGlvbiAobWVzc2FnZSkgeworICAgIHZhciBtZW1vcnkgPSBtZXNzYWdlLmRhdGE7
CisgICAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKTsKKyAgICB2aWV3
WzBdID0gNDM7CisgICAgdmlld1sxXSA9IDQyOworICAgIG1lbW9yeS5ncm93KDEpOworICAgIHZp
ZXdbMl0gPSA0NDsKKyAgICBzZWxmLnBvc3RNZXNzYWdlKCJET05FIik7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9kb20vd2ViYXNzZW1ibHktbWVtb3J5LW5vcm1hbC1mYWlsLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS93ZWJhc3NlbWJseS1tZW1vcnktbm9ybWFsLWZh
aWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwZWZkNmE4ZWY0YjViOGM2MmEwNzRmYzkzNWIz
MjQwZmFiYTBiMjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vd2ViYXNz
ZW1ibHktbWVtb3J5LW5vcm1hbC1mYWlsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitU
ZXN0IHNlbmRpbmcgV2ViQXNzZW1ibHkuTWVtb3J5IHZpYSBwb3N0TWVzc2FnZSB0byBhIHdvcmtl
ciBhbmQgZmFpbC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgd29ya2Vy
LnBvc3RNZXNzYWdlKG1lbW9yeSkgdGhyZXcgZXhjZXB0aW9uIERhdGFDbG9uZUVycm9yOiBUaGUg
b2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vd2Vi
YXNzZW1ibHktbWVtb3J5LW5vcm1hbC1mYWlsLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vd2Vi
YXNzZW1ibHktbWVtb3J5LW5vcm1hbC1mYWlsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGJjOTcyN2RiOGJk
NjYxZGYwOWU5Y2RiZDJmOTg5ZWI5YjZjOWZiMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL2RvbS93ZWJhc3NlbWJseS1tZW1vcnktbm9ybWFsLWZhaWwuaHRtbApAQCAtMCwwICsx
LDIxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3Qgc2Vu
ZGluZyBXZWJBc3NlbWJseS5NZW1vcnkgdmlhIHBvc3RNZXNzYWdlIHRvIGEgd29ya2VyIGFuZCBm
YWlsLiIpOworCitpZiAodHlwZW9mIFdlYkFzc2VtYmx5ICE9PSAndW5kZWZpbmVkJykgeworICAg
IHdpbmRvdy5tZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogMSwgbWF4
aW11bTogMiB9KTsKKyAgICB3aW5kb3cud29ya2VyID0gbmV3IFdvcmtlcigiLi9yZXNvdXJjZXMv
d2ViYXNzZW1ibHktbWVtb3J5LW5vcm1hbC1mYWlsLXdvcmtlci5qcyIpOworICAgIHNob3VsZFRo
cm93KGB3b3JrZXIucG9zdE1lc3NhZ2UobWVtb3J5KWApOworfQorCis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS93ZWJhc3NlbWJseS1t
ZW1vcnktc2hhcmVkLWJhc2ljLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS93ZWJh
c3NlbWJseS1tZW1vcnktc2hhcmVkLWJhc2ljLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDU1
Yzc4OTA5NWYxNmQ0MDNlYzBiMTg5ZDY5NGU3ZjVlMzk3NjFjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvZG9tL3dlYmFzc2VtYmx5LW1lbW9yeS1zaGFyZWQtYmFzaWMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1Rlc3Qgc2VuZGluZyBzaGFyZWQgV2ViQXNzZW1ibHku
TWVtb3J5IHZpYSBwb3N0TWVzc2FnZSB0byBhIHdvcmtlci4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1Mgdmlld1swXSBpcyA0MgorUEFTUyBtZXNzYWdlLmRhdGEgaXMgIkRP
TkUiCitQQVNTIHZpZXdbMF0gaXMgNDMKK1BBU1Mgdmlld1sxXSBpcyA0MgorUEFTUyB2aWV3WzJd
IGlzIDQ0CitQQVNTIGJ1ZmZlci5ieXRlTGVuZ3RoIGlzIDY1NTM2CitQQVNTIG1lbW9yeS5idWZm
ZXIuYnl0ZUxlbmd0aCBpcyAxMzEwNzIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vd2ViYXNz
ZW1ibHktbWVtb3J5LXNoYXJlZC1iYXNpYy5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL3dlYmFz
c2VtYmx5LW1lbW9yeS1zaGFyZWQtYmFzaWMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNWY5NzBkMDA0ZmYx
NjlmYWQ5NmEzYmZmMDQ1NGFjOTUxOTQ5YjIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvZG9tL3dlYmFzc2VtYmx5LW1lbW9yeS1zaGFyZWQtYmFzaWMuaHRtbApAQCAtMCwwICsx
LDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3Qgc2Vu
ZGluZyBzaGFyZWQgV2ViQXNzZW1ibHkuTWVtb3J5IHZpYSBwb3N0TWVzc2FnZSB0byBhIHdvcmtl
ci4iKTsKKworaWYgKHR5cGVvZiBXZWJBc3NlbWJseSAhPT0gJ3VuZGVmaW5lZCcpIHsKKyAgICBq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5
KHsgaW5pdGlhbDogMSwgbWF4aW11bTogMiwgc2hhcmVkOiB0cnVlIH0pOworICAgIGJ1ZmZlciA9
IG1lbW9yeS5idWZmZXI7CisgICAgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7CisgICAg
dmlld1swXSA9IDQyOworICAgIHNob3VsZEJlKGB2aWV3WzBdYCwgYDQyYCk7CisgICAgd29ya2Vy
ID0gbmV3IFdvcmtlcigiLi9yZXNvdXJjZXMvd2ViYXNzZW1ibHktbWVtb3J5LXNoYXJlZC13b3Jr
ZXIuanMiKTsKKyAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24obXNnKSB7CisgICAgICAg
IG1lc3NhZ2UgPSBtc2c7CisgICAgICAgIHNob3VsZEJlKGBtZXNzYWdlLmRhdGFgLCBgIkRPTkUi
YCk7CisgICAgICAgIHNob3VsZEJlKGB2aWV3WzBdYCwgYDQzYCk7CisgICAgICAgIHNob3VsZEJl
KGB2aWV3WzFdYCwgYDQyYCk7CisgICAgICAgIHNob3VsZEJlKGB2aWV3WzJdYCwgYDQ0YCk7Cisg
ICAgICAgIHNob3VsZEJlKGBidWZmZXIuYnl0ZUxlbmd0aGAsIGA2NTUzNmApOworICAgICAgICBz
aG91bGRCZShgbWVtb3J5LmJ1ZmZlci5ieXRlTGVuZ3RoYCwgYDEzMTA3MmApOworICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICB9OworICAgIHdvcmtlci5wb3N0TWVzc2FnZShtZW1vcnkpOwor
fQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9kb20vd2ViYXNzZW1ibHktbWVtb3J5LXNoYXJlZC1mYWlsLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2pzL2RvbS93ZWJhc3NlbWJseS1tZW1vcnktc2hhcmVkLWZhaWwtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjJiN2YzYTBiZmNmNjc4OTNiMzgzZmNmMzk0Yzk3YjY4N2JjNWU1YWQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vd2ViYXNzZW1ibHktbWVtb3J5LXNo
YXJlZC1mYWlsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0IHNlbmRpbmcgc2hh
cmVkIFdlYkFzc2VtYmx5Lk1lbW9yeSdzIFNoYXJlZEFycmF5QnVmZmVyIHZpYSBwb3N0TWVzc2Fn
ZSB0byBhIHdvcmtlciB3aXRoIHRyYW5zZmVyLWxpc3QgYW5kIGZhaWwuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIHdvcmtlci5wb3N0TWVzc2FnZShtZW1vcnkuYnVmZmVy
LCBbbWVtb3J5LmJ1ZmZlcl0pIHRocmV3IGV4Y2VwdGlvbiBEYXRhQ2xvbmVFcnJvcjogVGhlIG9i
amVjdCBjYW4gbm90IGJlIGNsb25lZC4uCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL3dlYmFz
c2VtYmx5LW1lbW9yeS1zaGFyZWQtZmFpbC5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL3dlYmFz
c2VtYmx5LW1lbW9yeS1zaGFyZWQtZmFpbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2MWNhMTFiYWVmZDNm
NWU2NTIzMzE4OTQyMmQzYTU5OTg4ZGUyZDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9qcy9kb20vd2ViYXNzZW1ibHktbWVtb3J5LXNoYXJlZC1mYWlsLmh0bWwKQEAgLTAsMCArMSwy
MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHNlbmRp
bmcgc2hhcmVkIFdlYkFzc2VtYmx5Lk1lbW9yeSdzIFNoYXJlZEFycmF5QnVmZmVyIHZpYSBwb3N0
TWVzc2FnZSB0byBhIHdvcmtlciB3aXRoIHRyYW5zZmVyLWxpc3QgYW5kIGZhaWwuIik7CisKK2lm
ICh0eXBlb2YgV2ViQXNzZW1ibHkgIT09ICd1bmRlZmluZWQnKSB7CisgICAgd2luZG93Lm1lbW9y
eSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAxLCBtYXhpbXVtOiAyLCBzaGFy
ZWQ6IHRydWUgfSk7CisgICAgd2luZG93LndvcmtlciA9IG5ldyBXb3JrZXIoIi4vcmVzb3VyY2Vz
L3dlYmFzc2VtYmx5LW1lbW9yeS1ub3JtYWwtZmFpbC13b3JrZXIuanMiKTsKKyAgICBzaG91bGRU
aHJvdyhgd29ya2VyLnBvc3RNZXNzYWdlKG1lbW9yeS5idWZmZXIsIFttZW1vcnkuYnVmZmVyXSlg
KTsKK30KKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDI0OTYxZTUyYzlhOWU2ZGY3ZTczZjQzMDM5NGYw
MGYzYWJlYjdjZWUuLjExNzViYjQzZTg1MDBlZjI4MmI3NTlkYjA3YjBkYjQ5ZjBhZGU0ZGIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC00NjAwLDMgKzQ2
MDAsOSBAQCB3ZWJraXQub3JnL2IvMjE4MDQwIHN2Zy9jbGlwLXBhdGgvY2xpcC1wYXRoLWludmFs
aWQuc3ZnIFsgUGFzcyBDcmFzaCBdCiAjIFdpbmRvd3MgZG9lc24ndCBzdXBwb3J0IGNvbG9yIGZv
bnRzLgogd2Via2l0Lm9yZy9iLzIxODM0NiBmYXN0L3RleHQvY2FudmFzLWNvbG9yLWZvbnRzIFsg
UGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTgzNDYgaHR0cC90ZXN0cy9j
YW52YXMvY29sb3ItZm9udHMgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQorCisjIFdlYkFzc2Vt
Ymx5IGlzIG5vdCBlbmFibGVkCitqcy9kb20vd2ViYXNzZW1ibHktbWVtb3J5LXNoYXJlZC1iYXNp
Yy5odG1sIFsgU2tpcCBdCitqcy9kb20vd2ViYXNzZW1ibHktbWVtb3J5LW5vcm1hbC1mYWlsLmh0
bWwgWyBTa2lwIF0KK2pzL2RvbS93ZWJhc3NlbWJseS1tZW1vcnktc2hhcmVkLWZhaWwuaHRtbCBb
IFNraXAgXQorTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2hhcmVkLW1lbW9yeS1zdHJ1
Y3R1cmVkLWNsb25lLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQtbWVtb3J5LXN0cnVjdHVyZWQtY2xvbmUuanMg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLW1lbW9yeS1z
dHJ1Y3R1cmVkLWNsb25lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzOWYxZWIxMGQ0OTQ3NDllZGQ2ZmVhZDJh
YjgyN2UxMDk3YzJhMWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLW1lbW9yeS1zdHJ1Y3R1cmVkLWNsb25lLmpzCkBAIC0w
LDAgKzEsNDAgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRz
KCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3No
YXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBzdHJ1Y3R1cmVkIGNsb25lIHBlcm11
dGF0aW9ucyBpbiBJbmRleGVkREIgd2l0aCBzaGFyZWQgbWVtb3JpZXMuIik7CisKK2luZGV4ZWRE
QlRlc3QocHJlcGFyZURhdGFiYXNlLCBzdGFydFRlc3RzKTsKK2Z1bmN0aW9uIHByZXBhcmVEYXRh
YmFzZSgpCit7CisgICAgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIGV2YWxBbmRMb2co
InN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgZGVidWco
IlRoaXMgaW5kZXggaXMgbm90IHVzZWQsIGJ1dCBldmFsdWF0aW5nIGtleSBwYXRoIG9uIGVhY2gg
cHV0KCkgY2FsbCB3aWxsIGV4ZXJjaXNlIChkZSlzZXJpYWxpemF0aW9uOiIpOworICAgIGV2YWxB
bmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAnZHVtbXlLZXlQYXRoJykiKTsK
K30KKworYXN5bmMgZnVuY3Rpb24gc3RhcnRUZXN0cygpCit7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJSdW5uaW5nIHRlc3RzLi4uIik7CisKKyAgICBhd2FpdCB0ZXN0U2hhcmVkV2ViQXNz
ZW1ibHlNZW1vcnkoKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gdGVzdFNo
YXJlZFdlYkFzc2VtYmx5TWVtb3J5KCkKK3sKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29s
dmUsIHJlamVjdCkgPT4geworICAgICAgICBkZWJ1ZygiVGVzdCBzaGFyZWQgV2ViQXNzZW1ibHku
TWVtb3J5Iik7CisKKyAgICAgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2Fj
dGlvbignc3RvcmVOYW1lJywgJ3JlYWR3cml0ZScpIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0
b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgICAgIHRy
YW5zYWN0aW9uLm9uZXJyb3IgPSByZWplY3Q7CisgICAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQg
PSByZWplY3Q7CisgICAgICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSByZXNvbHZlOworCisg
ICAgICAgIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAxLCBtYXhp
bXVtOiAxLCBzaGFyZWQ6IHRydWUgfSk7CisgICAgICAgIHNob3VsZFRocm93KGBzdG9yZS5wdXQo
bWVtb3J5LCAna2V5JylgKTsKKyAgICB9KTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3NoYXJlZC1tZW1vcnktc3RydWN0dXJlZC1jbG9uZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zaGFyZWQtbWVtb3J5LXN0cnVjdHVy
ZWQtY2xvbmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4NGRkYWYzNTMxZDNiMzZlYTFhZTQw
ZGIwNTFmOTY0ZjJhMDAyNTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9zaGFyZWQtbWVtb3J5LXN0cnVjdHVyZWQtY2xvbmUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMjIgQEAKK1Rlc3Qgc3RydWN0dXJlZCBjbG9uZSBwZXJtdXRhdGlvbnMgaW4gSW5k
ZXhlZERCIHdpdGggc2hhcmVkIG1lbW9yaWVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIg
fHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVk
REI7CisKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIub3Blbihk
Ym5hbWUpCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQorVGhpcyBp
bmRleCBpcyBub3QgdXNlZCwgYnV0IGV2YWx1YXRpbmcga2V5IHBhdGggb24gZWFjaCBwdXQoKSBj
YWxsIHdpbGwgZXhlcmNpc2UgKGRlKXNlcmlhbGl6YXRpb246CitzdG9yZS5jcmVhdGVJbmRleCgn
aW5kZXhOYW1lJywgJ2R1bW15S2V5UGF0aCcpCisKK1J1bm5pbmcgdGVzdHMuLi4KK1Rlc3Qgc2hh
cmVkIFdlYkFzc2VtYmx5Lk1lbW9yeQordHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3Rv
cmVOYW1lJywgJ3JlYWR3cml0ZScpCitzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnKQorUEFTUyBzdG9yZS5wdXQobWVtb3J5LCAna2V5JykgdGhyZXcgZXhjZXB0aW9u
IERhdGFDbG9uZUVycm9yOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLi4KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zaGFyZWQtbWVtb3J5LXN0cnVjdHVyZWQtY2xv
bmUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NoYXJlZC1tZW1vcnktc3Ry
dWN0dXJlZC1jbG9uZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzZDMzMGVkMGY0MmIxYTIxZTVhNTk3YmY0
N2VjM2ZhODM0ZTY4MWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9zaGFyZWQtbWVtb3J5LXN0cnVjdHVyZWQtY2xvbmUuaHRtbApAQCAtMCwwICsxLDkg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC1tZW1vcnkt
c3RydWN0dXJlZC1jbG9uZS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhkODc2ZWU0
ODg5YTAyNTZjNDMwZWE3MjAzMzU3OGE0NzdkOTI3ZWUuLjk5YjIyMzgwOGM5NWZkMGNmNzdmMWY4
ZWExMWI4NTVmMDVlMzI1ZmYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMTEtMTYgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgV2ViQXNz
ZW1ibHkuTWVtb3J5IHdpdGggc2hhcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTg2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHdhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLXNoYXJlZC5q
czogQWRkZWQuCisgICAgICAgICh3YXNtRnJhbWVDb3VudEZyb21FcnJvcik6CisgICAgICAgICog
d2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLXN0b3JlLXNoYXJlZC5qczogQWRkZWQuCisgICAgICAg
ICogd2FzbS9qcy1hcGkvdGVzdF9tZW1vcnkuanM6CisgICAgICAgIChiaW5hcnlTaG91bGROb3RQ
YXJzZSk6CisgICAgICAgICogd2FzbS9zdHJlc3Mvc2hhcmVkLW1lbW9yeS1lcnJvcnMuanM6IEFk
ZGVkLgorICAgICAgICAoYXNzZXJ0LnRocm93cyk6CisgICAgICAgICogd2FzbS9zdHJlc3Mvc2hh
cmVkLXdhc20tbWVtb3J5LWJ1ZmZlci5qczogQWRkZWQuCisKIDIwMjAtMTEtMTUgIFNlcmdleSBS
dWJhbm92ICA8Y2hpMTg3QGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBVcGRhdGUgd2FzbSBz
cGVjIHRlc3RzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1s
b2FkLXNoYXJlZC5qcyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLWxvYWQtc2hh
cmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ5ODkwYTdhYWQ1N2U2NDgyNGQxMTRiYjJhMzExODA2MzI0NDAx
NmIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1s
b2FkLXNoYXJlZC5qcwpAQCAtMCwwICsxLDM0IEBACitpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9C
dWlsZGVyLmpzJworaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcycKKworY29u
c3QgcGFnZVNpemUgPSA2NCAqIDEwMjQ7Citjb25zdCBudW1QYWdlcyA9IDEwOworCitjb25zdCBi
dWlsZGVyID0gKG5ldyBCdWlsZGVyKCkpCisgICAgLlR5cGUoKS5FbmQoKQorICAgIC5JbXBvcnQo
KQorICAgICAgICAuTWVtb3J5KCJhIiwgImIiLCB7aW5pdGlhbDogbnVtUGFnZXN9KQorICAgIC5F
bmQoKQorICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgLkV4cG9ydCgpLkZ1bmN0aW9uKCJmb28i
KS5FbmQoKQorICAgIC5Db2RlKCkKKyAgICAgICAgLkZ1bmN0aW9uKCJmb28iLCB7cGFyYW1zOiBb
ImkzMiJdLCByZXQ6ICJpMzIifSkKKyAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAg
ICAgLkkzMkxvYWQoMiwgMCkKKyAgICAgICAgICAgIC5SZXR1cm4oKQorICAgICAgICAuRW5kKCkK
KyAgICAuRW5kKCk7CisKK2NvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsK
K2NvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKK2NvbnN0IGZvbyA9
IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHthOiB7YjogbmV3IFdlYkFzc2VtYmx5
Lk1lbW9yeSh7aW5pdGlhbDogbnVtUGFnZXMsIG1heGltdW06IG51bVBhZ2VzICogMiwgc2hhcmVk
OiB0cnVlfSl9fSkuZXhwb3J0cy5mb287CisKK2Z1bmN0aW9uIHdhc21GcmFtZUNvdW50RnJvbUVy
cm9yKGUpIHsKKyAgICBsZXQgc3RhY2tGcmFtZXMgPSBlLnN0YWNrLnNwbGl0KCJcbiIpLmZpbHRl
cigocykgPT4gcy5pbmRleE9mKCJ3YXNtLSIpICE9PSAtMSk7CisgICAgcmV0dXJuIHN0YWNrRnJh
bWVzLmxlbmd0aDsKK30KKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICBj
b25zdCBlID0gYXNzZXJ0LnRocm93cygoKSA9PiBmb28obnVtUGFnZXMgKiBwYWdlU2l6ZSArIDEp
LCBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IsICJPdXQgb2YgYm91bmRzIG1lbW9yeSBhY2Nlc3Mi
KTsKKyAgICBhc3NlcnQuZXEod2FzbUZyYW1lQ291bnRGcm9tRXJyb3IoZSksIDIpOworfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtc3RvcmUtc2hhcmVkLmpz
IGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtc3RvcmUtc2hhcmVkLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ4Y2E5YTg5NjM4MzkxYmYwNGVlZGNiYjZiN2QzZmM1NDFlODE0ZGEKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1zdG9yZS1zaGFyZWQu
anMKQEAgLTAsMCArMSwyOSBAQAoraW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcycK
K2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnCisKK2NvbnN0IHBhZ2VTaXpl
ID0gNjQgKiAxMDI0OworY29uc3QgbnVtUGFnZXMgPSAxMDsKKworeworICAgIGNvbnN0IGJ1aWxk
ZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAuSW1w
b3J0KCkKKyAgICAgICAgICAgIC5NZW1vcnkoImEiLCAiYiIsIHtpbml0aWFsOiBudW1QYWdlc30p
CisgICAgICAgIC5FbmQoKQorICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAuRXhw
b3J0KCkuRnVuY3Rpb24oImZvbyIpLkVuZCgpCisgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAg
IC5GdW5jdGlvbigiZm9vIiwge3BhcmFtczogWyJpMzIiLCAiaTMyIl19KQorICAgICAgICAgICAg
ICAgIC5HZXRMb2NhbCgxKQorICAgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAg
ICAgICAgIC5JMzJTdG9yZSgyLCAwKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgIC5FbmQo
KTsKKworICAgIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsKKyAgICBj
b25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7CisgICAgY29uc3QgZm9v
ID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2E6IHtiOiBuZXcgV2ViQXNzZW1i
bHkuTWVtb3J5KHtpbml0aWFsOiBudW1QYWdlcywgbWF4aW11bTogbnVtUGFnZXMgKiAyLCBzaGFy
ZWQ6IHRydWV9KX19KS5leHBvcnRzLmZvbzsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDA7IGkrKykKKyAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBmb28oaSwgbnVtUGFnZXMgKiBw
YWdlU2l6ZSArIDEpLCBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IsICJPdXQgb2YgYm91bmRzIG1l
bW9yeSBhY2Nlc3MiKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9t
ZW1vcnkuanMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfbWVtb3J5LmpzCmluZGV4IDUyMDU5
OTI3MGM1MGJkYzhlYzJhNWUxYTUxOTVlMWNjY2IwOWM5NDguLjcwZWJkZTI4NjIzMmUxODFmNWVk
Y2M1MjlhZDIwZTRmNmExNTA5MzUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVz
dF9tZW1vcnkuanMKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0X21lbW9yeS5qcwpAQCAt
MTI0LDcgKzEyNCw3IEBAIGZ1bmN0aW9uIGJpbmFyeVNob3VsZE5vdFBhcnNlKGJ1aWxkZXIpIHsK
IAogewogICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSgyMCks
IFR5cGVFcnJvciwgIldlYkFzc2VtYmx5Lk1lbW9yeSBleHBlY3RzIGl0cyBmaXJzdCBhcmd1bWVu
dCB0byBiZSBhbiBvYmplY3QiKTsgCi0gICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNz
ZW1ibHkuTWVtb3J5KHt9LCB7fSksIFR5cGVFcnJvciwgICJXZWJBc3NlbWJseS5NZW1vcnkgZXhw
ZWN0cyBleGFjdGx5IG9uZSBhcmd1bWVudCIpOworICAgIG5ldyBXZWJBc3NlbWJseS5NZW1vcnko
e2luaXRpYWw6MX0sIHt9KTsKIH0KIAogZnVuY3Rpb24gdGVzdChmKSB7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3dhc20vc3RyZXNzL3NoYXJlZC1tZW1vcnktZXJyb3JzLmpzIGIvSlNUZXN0cy93YXNt
L3N0cmVzcy9zaGFyZWQtbWVtb3J5LWVycm9ycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjRiZmZiNzNlYTkw
OGE4NzliMDQ4N2JjYjc3NzlmOWY3MTczNDBmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93
YXNtL3N0cmVzcy9zaGFyZWQtbWVtb3J5LWVycm9ycy5qcwpAQCAtMCwwICsxLDEwIEBACitpbXBv
cnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKKworYXNzZXJ0LnRocm93cygoKSA9
PiB7CisgICAgbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDEsIHNoYXJlZDogdHJ1
ZSB9KTsKK30sIFR5cGVFcnJvciwgYCdtYXhpbXVtJyBwYWdlIGNvdW50IG11c3QgYmUgZGVmaW5l
ZCBpZiAnc2hhcmVkJyBpcyB0cnVlYCk7CisKK2Fzc2VydC50aHJvd3MoKCkgPT4geworICAgIGxl
dCBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogMSwgbWF4aW11bTog
Miwgc2hhcmVkOiB0cnVlIH0pOworICAgIG1lbW9yeS5ncm93KDMpOworfSwgUmFuZ2VFcnJvciwg
YFdlYkFzc2VtYmx5Lk1lbW9yeS5ncm93IHdvdWxkIGV4Y2VlZCB0aGUgbWVtb3J5J3MgZGVjbGFy
ZWQgbWF4aW11bSBzaXplYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vc3RyZXNzL3NoYXJl
ZC13YXNtLW1lbW9yeS1idWZmZXIuanMgYi9KU1Rlc3RzL3dhc20vc3RyZXNzL3NoYXJlZC13YXNt
LW1lbW9yeS1idWZmZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDg5NjEzYzkwOTI1NTcwNDU2ZTk1MDg0NTFl
NWUxYzAzZGUxNmVjMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9zdHJlc3Mvc2hh
cmVkLXdhc20tbWVtb3J5LWJ1ZmZlci5qcwpAQCAtMCwwICsxLDI0IEBACitpbXBvcnQgKiBhcyBh
c3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJworCitsZXQgcGFnZVNpemUgPSA2NCA8PCAxMDsKK2xl
dCBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsKKyAgICBpbml0aWFsOiAxLAorICAg
IG1heGltdW06IDUsCisgICAgc2hhcmVkOiB0cnVlLAorfSk7CitsZXQgYnVmZmVyMSA9IG1lbW9y
eS5idWZmZXI7Cithc3NlcnQuZXEoYnVmZmVyMS5ieXRlTGVuZ3RoLCBwYWdlU2l6ZSAqIDEpOwor
YXNzZXJ0LmVxKGJ1ZmZlcjEsIG1lbW9yeS5idWZmZXIpOworCittZW1vcnkuZ3JvdygxKTsKK2xl
dCBidWZmZXIyID0gbWVtb3J5LmJ1ZmZlcjsKK2Fzc2VydC5lcShidWZmZXIxLmJ5dGVMZW5ndGgs
IHBhZ2VTaXplICogMSk7Cithc3NlcnQuZXEoYnVmZmVyMi5ieXRlTGVuZ3RoLCBwYWdlU2l6ZSAq
IDIpOworYXNzZXJ0LmZhbHN5KGJ1ZmZlcjEgPT09IGJ1ZmZlcjIpOworCitsZXQgYnl0ZXMxID0g
bmV3IFVpbnQ4QXJyYXkoYnVmZmVyMSk7CitsZXQgYnl0ZXMyID0gbmV3IFVpbnQ4QXJyYXkoYnVm
ZmVyMik7CitieXRlczFbMF0gPSA0MjsKK2Fzc2VydC5lcShieXRlczJbMF0sIDQyKTsKK2J5dGVz
MlswXSA9IDQzOworYXNzZXJ0LmVxKGJ5dGVzMVswXSwgNDMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414289</attachid>
            <date>2020-11-16 16:22:19 -0800</date>
            <delta_ts>2020-11-17 17:16:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218693-20201116162218.patch</filename>
            <type>text/plain</type>
            <size>187214</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OThkOTIzZmUxNTYzZmE2MzViOWM4ZjdlMmU3ZGVkMTUwODU0NDI1Li5hNDEwMWNjMmM0N2ZmMmJj
MzUzOThiYzZiMzE2NzA4NThmODE5ZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjYgQEAKKzIwMjAtMTEtMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgV2ViQXNzZW1ibHkuTWVtb3J5IHdpdGggc2hh
cmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg2
OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGltcGxlbWVudHMgc2hhcmVkIFdlYkFzc2VtYmx5Lk1lbW9yeS4gVGhpcyBjYW4gYmUg
c2hhcmVkIGJldHdlZW4gd29ya2VycyBsaWtlIFNoYXJlZEFycmF5QnVmZmVyLgorICAgICAgICBU
aGUgbW9zdCBpbnRlcmVzdGluZyB0aGluZyBvZiBzaGFyZWQgV2ViQXNzZW1ibHkuTWVtb3J5IGlz
IHRoYXQgaXQgaXMgZ3Jvd2FibGUuIFRoZSBtZW1vcnkgY2FuIGJlIGdyb3duIGluCisgICAgICAg
IG9uZSB0aHJlYWQsIGFuZCBpbW1lZGlhdGVseSwgaXQgc2hvdWxkIGJlIGFjY2Vzc2libGUgaW4g
dGhlIG90aGVyIHRocmVhZHMuCisKKyAgICAgICAgVG8gYWNoaWV2ZSB0aGF0LCBzaGFyZWQgV2Vi
QXNzZW1ibHkuTWVtb3J5IGxldmVyYWdlcyBzaWduYWxpbmcgZXZlbiBpZiBib3VuZHMtY2hlY2tp
bmcgaXMgbWFpbmx5IHVzZWQuCisgICAgICAgIElmIHRoZSBmYXN0IG1lbW9yeSBpcyBlbmFibGVk
LCB3ZSBqdXN0IHVzZSBpdCBzbyB0aGF0IG1wcm90ZWN0IGNhbiBtYWtlIG1lbW9yeSBncm93biBl
YXNpbHkuIEJ1dCBpZiBmYXN0IG1lbW9yeQorICAgICAgICBpcyBkaXNhYmxlZCwgd2UgYWxsb2Nh
dGVzIHJlcXVlc3RlZCBWQSByZWdpb24gYW5kIHBlcmZvcm0gYm91bmRzLWNoZWNraW5nIHdpdGgg
dGhpcyBWQS4gU2luY2UgV2ViQXNzZW1ibHkuTWVtb3J5CisgICAgICAgIGFsd2F5cyByZXF1aXJl
cyAibWF4aW11bSIgc2l6ZSBvZiBtZW1vcnksIHdlIGNhbiBmaXJzdCBhbGxvY2F0ZSBWQSBhbmQg
bWFwIGFjdGl2ZSBwYXJ0IG9mIG1lbW9yeSBmaXJzdC4gQW5kCisgICAgICAgIHdoZW4gZ3Jvd2lu
Zywgd2UgcGVyZm9ybSBtcHJvdGVjdCB0byB0aGUgcmVzdCBvZiB0aGUgbWVtb3J5LiBTaW5jZSB0
aGlzIFZBIGlzIG5vdCA0R0IsIHdlIHN0aWxsIG5lZWQgdG8gcGVyZm9ybQorICAgICAgICBib3Vu
ZHMtY2hlY2tpbmcsIGJ1dCB3ZSBwZXJmb3JtIGJvdW5kcy1jaGVja2luZyB3aXRoIFZBIHNpemUg
aW5zdGVhZCBvZiBhY3RpdmUgbWVtb3J5IHNpemUuIEFzIGEgcmVzdWx0LCBldmVuIGlmCisgICAg
ICAgIHNoYXJlZCBXZWJBc3NlbWJseS5NZW1vcnkgaXMgZ3Jvd24sIHdlIGRvIG5vdCBuZWVkIHRv
IHVwZGF0ZSAoMSkgcG9pbnRlciBhbmQgKDIpIGJvdW5kcy1jaGVja2luZyBzaXplLgorICAgICAg
ICBUaGUgc2hhcmVkIGJvdW5kcy1jaGVja2luZyBXZWJBc3NlbWJseS5NZW1vcnkgaXMgc29tZXRo
aW5nIGxpa2UgYmVsb3cuCisKKyAgICAgICAgPD09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PSBtYXhpbXVtID09PT09PT09PT09PT09PT09PT09PT09PT09PT0+
PC0tLS0tLS0tLS0tLSBvdGhlciBtZW1vcnksIHByb3RlY3RlZCBieSBib3VuZHMtY2hlY2tpbmcg
LS0uLi4KKyAgICAgICAgPD09PT09PT0gYWN0aXZlID09PT09PT09PT0+PD09PT09PT09PT09PT09
PT09PT09PSBub3QgYWN0aXZlIHlldCA9PT09PT09PT09PT09PT09PT09PT0+CisgICAgICAgIF4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBpZiB3ZSBhY2Nlc3MgdGhpcywgZmF1bHQg
aGFuZGxlciB3aWxsIGRldGVjdCBpdF0gICAgXgorICAgICAgICBwb2ludGVyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvdW5kIGNoZWNraW5nIHNpemUKKworICAgICAgICBUaGVzZSAiZ3Jvd2FibGUg
Ym91bmQtY2hlY2tpbmcgbWVtb3J5IiBpcyBub3cgbWFuYWdlZCBieSB3YXNtIG1lbW9yeS1tYW5h
Z2VyLiBBbmQgZmF1bHQgaGFuZGxlciBpcyBldmVuIGlmIGZhc3QgbWVtb3J5IGlzIGRpc2FibGVk
LgorICAgICAgICBBbmQgZmF1bHQgaGFuZGxlciBhbHNvIGFjY2VwdHMgc2lnbmFscyBmcm9tIFdh
c20gTExJbnQgY29kZSBzaW5jZSBib3RoIGJvdW5kcy1jaGVja2luZ3MgKyBzaWduYWxpbmdzIGFy
ZSByZXF1aXJlZCB0byBjb25maW5lIG1lbW9yeSBhY2Nlc3MgZXZlbiBpbgorICAgICAgICBXYXNt
IExMSW50LiBUaGlzIHBhdGNoIGFsc28gcmVuYW1lZCBtZW1vcnktc2l6ZSBhbmQgc2l6ZS1yZWdp
c3RlciB0byBib3VuZHMtY2hlY2tpbmctc2l6ZSBhbmQgYm91bmRzLWNoZWNraW5nLXNpemUtcmVn
aXN0ZXIgc2luY2UgdGhpcyBpcyBubyBsb25nZXIKKyAgICAgICAgYSBzaXplIG9mIG1lbW9yeS4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbGxpbnQvTExJbnRQQ1Jhbmdlcy5o
OgorICAgICAgICAoSlNDOjpMTEludDo6aXNXYXNtTExJbnRQQyk6CisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvV2ViQXNzZW1ibHkuYXNt
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5QnVmZmVyOjp0b1dyYXBwZWRBbGxvd1NoYXJlZCk6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5QnVmZmVyVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3Ojp0b1dyYXBwZWRBbGxvd1No
YXJlZCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAg
ICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dG9XcmFwcGVkQWxs
b3dTaGFyZWQpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChKU0M6
Om92ZXJyaWRlRGVmYXVsdHMpOgorICAgICAgICAoSlNDOjpPcHRpb25zOjppbml0aWFsaXplKToK
KyAgICAgICAgKiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OkFpcklSR2VuZXJhdG9yOjpBaXJJUkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206
OkFpcklSR2VuZXJhdG9yOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZSk6CisgICAgICAg
IChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZENhbGwpOgorICAgICAgICAo
SlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KToKKyAgICAgICAgKiB3
YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVy
YXRvcjo6QjNJUkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6
OnJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJ
UkdlbmVyYXRvcjo6YWRkQ3VycmVudE1lbW9yeSk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJH
ZW5lcmF0b3I6OmVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5l
cmF0b3I6OmFkZENhbGxJbmRpcmVjdCk6CisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6
CisgICAgICAgIChKU0M6Oldhc206Ondhc21Ub1dhc20pOgorICAgICAgICAqIHdhc20vV2FzbUZh
dWx0U2lnbmFsSGFuZGxlci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OnRyYXBIYW5kbGVyKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6ZW5hYmxlRmFzdE1lbW9yeSk6CisgICAgICAgIChKU0M6Oldh
c206OnByZXBhcmVGYXN0TWVtb3J5KToKKyAgICAgICAgKiB3YXNtL1dhc21JbnN0YW5jZS5oOgor
ICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6Y2FjaGVkTWVtb3J5IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OmNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSBjb25zdCk6
CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjp1cGRhdGVDYWNoZWRNZW1vcnkpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1Np
emUpOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6Y2FjaGVkTWVtb3J5U2l6ZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hl
ZE1lbW9yeVNpemUpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeS5jcHA6Cisg
ICAgICAgIChKU0M6Oldhc206Ok1lbW9yeUhhbmRsZTo6TWVtb3J5SGFuZGxlKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6TWVtb3J5SGFuZGxlOjp+TWVtb3J5SGFuZGxlKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6TWVtb3J5OjpNZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6TWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUdyb3dhYmxlTWVtb3J5KToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6TWVtb3J5Ojpncm93U2hhcmVkKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
TWVtb3J5Ojpncm93KToKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5OjpkdW1wIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5Ojp+TWVtb3J5KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6V2FzbTo6TWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUZhc3RNZW1vcnkpOiBEZWxldGVk
LgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1v
cnk6OmFkZHJlc3NJc0luQWN0aXZlR3Jvd2FibGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNt
OjpNZW1vcnk6Om9wZXJhdG9yIGJvb2wgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpX
YXNtOjpNZW1vcnk6Om1lbW9yeSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206
Ok1lbW9yeTo6c2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206Ok1lbW9y
eTo6c2l6ZUluUGFnZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1v
cnk6OmluaXRpYWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6
Om1heGltdW0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Om1v
ZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6OmNoZWNrKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5OjpvZmZzZXRPZk1lbW9yeSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6b2Zmc2V0T2ZTaXplKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUZhc3RNZW1v
cnkpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcDoK
KyAgICAgICAgKEpTQzo6V2FzbTo6UGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQpOgorICAgICAgICAo
SlNDOjpXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyk6CisgICAg
ICAgICogd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6
UGlubmVkUmVnaXN0ZXJJbmZvOjp0b1NhdmUgY29uc3QpOgorICAgICAgICAqIHdhc20vV2FzbU1l
bW9yeU1vZGUuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjptYWtlU3RyaW5nKToKKyAgICAgICAg
KiB3YXNtL1dhc21NZW1vcnlNb2RlLmg6CisgICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6
CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICog
d2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFz
c2VtYmx5SW5zdGFuY2U6OnRyeUNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5TWVtb3J5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6YnVmZmVy
KToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6Z3Jvd1N1Y2Nlc3NDYWxsYmFj
ayk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5Lmg6CisgICAgICAgICog
d2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1i
bHlGdW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3cpOgorICAgICAgICAqIHdhc20vanMvV2Vi
QXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3Rv
dHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6
OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZSk6CisKIDIwMjAtMTEtMTUgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBXYXNtIHNob3Vs
ZCBnZXQgYnl0ZSBsZW5ndGggZnJvbSBzb3VyY2UgdHlwZWQgYXJyYXkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAx
ODExNzVjYzU2ZjY2ZWU3NDQzNjE1OTMwNjZlYWQ3ZDY3NzhjZTE1Li41OGRmZTM5YWFjNmJhMTc0
NTVlZmQwYzgzY2ZlZDAzZTlkNDFmNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAzIEBACisy
MDIwLTExLTE2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAg
W0pTQ10gSW1wbGVtZW50IFdlYkFzc2VtYmx5Lk1lbW9yeSB3aXRoIHNoYXJlZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NjkzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gV2ViQ29yZSwgd2UgbmVl
ZCB0aHJlZSB0aGluZ3MuCisKKyAgICAgICAgMS4gU2hhcmVkIFdlYkFzc2VtYmx5Lk1lbW9yeSBz
ZXJpYWxpemF0aW9uL2Rlc2VyaWFsaXphdGlvbgorCisgICAgICAgICAgICBUaGlzIHBhdGNoIGFk
ZHMgc3RydWN0dXJlLWNsb25pbmcgZm9yIFdlYkFzc2VtYmx5Lk1lbW9yeSB0byBwYXNzIGl0IHRv
IHRoZSBvdGhlciB3b3JrZXJzLiBDbG9uaW5nIGlzIGF2YWlsYWJsZQorICAgICAgICAgICAgb25s
eSB3aGVuIHRoZSBXZWJBc3NlbWJseS5NZW1vcnkgaXMgc2hhcmVkIG1vZGUuIEFuZCBpdCBpcyBv
bmx5IGF2YWlsYWJsZSB3aGVuIHdlIGFyZSB1c2luZyBpdCBpbiBwb3N0TWVzc2FnZS4KKyAgICAg
ICAgICAgIFNvIHdlIGNhbm5vdCBzdG9yZSBXZWJBc3NlbWJseS5NZW1vcnkgaW4gSW5kZXhlZERC
LgorCisgICAgICAgIDIuIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcjo6aXNBdG9taWNzV2Fp
dEFsbG93ZWRPbkN1cnJlbnRUaHJlYWQKKworICAgICAgICAgICAgQXRvbWljcy53YWl0IGlzIHVz
YWJsZSBvbmx5IGluIFdvcmtlcnMsIGFuZCAqbm90KiB1c2FibGUgaW4gU2VydmljZSBXb3JrZXJz
LiBXaGVuIGNyZWF0aW5nIFZNLCB3ZSBwYXNzIFdvcmtlclRocmVhZFR5cGUKKyAgICAgICAgICAg
IGFuZCBtYWtlIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcjo6aXNBdG9taWNzV2FpdEFsbG93
ZWRPbkN1cnJlbnRUaHJlYWQgcmV0dXJuIGFwcHJvcHJpYXRlIHZhbHVlLgorCisgICAgICAgIDMu
IFtBbGxvd1NoYXJlZF0gc3VwcG9ydCBmb3IgV1BUCisKKyAgICAgICAgICAgIFdQVCB0ZXN0cyBm
b3IgdGhpcyBhcmUgYnJva2VuLCBhbmQgdGVzdHMgYXJlIHNheWluZyAiUEFTUyIgd2hpbGUgdGhl
IGZlYXR1cmUgaXMgbm90IGltcGxlbWVudGVkIGF0IGFsbC4KKyAgICAgICAgICAgIE5vdywgdGhl
IGZlYXR1cmUgaXMgYWN0dWFsbHkgaW1wbGVtZW50ZWQsIGFuZCBXUFQgdGVzdHMgc3RhcnQgc2hv
d2luZyB0aGF0IFtBbGxvd1NoYXJlZF0gYW5ub3RhdGlvbiBpbiBJREwKKyAgICAgICAgICAgIGlz
IG5vdCBpbXBsZW1lbnRlZC4gW0FsbG93U2hhcmVkXSBpcyB0aGF0LCB1c3VhbGx5LCBET00gZG9l
cyBub3QgYWNjZXB0IFR5cGVkQXJyYXkgb3JpZ2luYXRlZCBmcm9tIFNoYXJlZEFycmF5QnVmZmVy
LgorICAgICAgICAgICAgZS5nLiBlbmNvZGVJbnRvKC4uLiwgVWludDhBcnJheSkgRE9NIElETCB0
aHJvd3MgYW4gZXJyb3IgaWYgVWludDhBcnJheSBpcyBiYWNrZWQgYnkgU2hhcmVkQXJyYXlCdWZm
ZXIuCisgICAgICAgICAgICBCdXQgaW4gdGhlIGxpbWl0ZWQgcGxhY2VzLCB3ZSBhcmUgZXhwbGlj
aXRseSBhbGxvd2luZyB0aGlzLiBUaGlzIGlzIFtBbGxvd1NoYXJlZF0gYW5ub3RhdGlvbi4KKyAg
ICAgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGF0IHNvIHRoYXQgd2Uga2VlcCBwYXNz
aW5nIFRleHRFbmNvZGVyIC8gVGV4dERlY29kZXIgdGVzdHMuCisKKyAgICAgICAgKiBIZWFkZXJz
LmNtYWtlOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcmlhbGl6
YXRpb25Db250ZXh0Ojppbml0aWFsaXplVk0pOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9JRExUeXBlcy5oOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0NvbW1vblZNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbW1vblZN
U2xvdyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0QnVmZmVyU291cmNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjo6Y29udmVy
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMQXJyYXlCdWZmZXI+Ojpjb252ZXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJRExEYXRhVmlldz46OmNvbnZlcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udmVydGVyPElETEludDhBcnJheT46OmNvbnZlcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udmVydGVyPElETEludDE2QXJyYXk+Ojpjb252ZXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJRExJbnQzMkFycmF5Pjo6Y29udmVydCk6CisgICAgICAg
IChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMVWludDhBcnJheT46OmNvbnZlcnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udmVydGVyPElETFVpbnQxNkFycmF5Pjo6Y29udmVydCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb252ZXJ0ZXI8SURMVWludDMyQXJyYXk+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnZlcnRlcjxJRExVaW50OENsYW1wZWRBcnJheT46OmNvbnZlcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udmVydGVyPElETEZsb2F0MzJBcnJheT46OmNvbnZlcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udmVydGVyPElETEZsb2F0NjRBcnJheT46OmNvbnZlcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udmVydGVyPElETEFycmF5QnVmZmVyVmlldz46OmNvbnZlcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udmVydGVyPElETEFsbG93U2hhcmVkQWRhcHRvcjxUPj46OmNvbnZl
cnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydFVuaW9uLmg6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25l
U2VyaWFsaXplcjo6Q2xvbmVTZXJpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2Vy
aWFsaXplcjo6ZHVtcElmVGVybWluYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlh
bGl6ZXI6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVy
OjpDbG9uZURlc2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXpl
cjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y29tcHV0ZU1lbW9yeUNvc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xp
ZW50RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1h
bFdvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmg6Cisg
ICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcjo6V2ViQ29yZVR5cGVk
QXJyYXlDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVUeXBlZEFycmF5Q29u
dHJvbGxlcjo6aXNBdG9taWNzV2FpdEFsbG93ZWRPbkN1cnJlbnRUaHJlYWQpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1dlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5oOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoSXNBbm5vdGF0ZWRU
eXBlKToKKyAgICAgICAgKEdldEFubm90YXRlZElETFR5cGUpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqRE9NQ29u
c3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbl9lbmNvZGVJbnRvQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2Jq
LmlkbDoKKyAgICAgICAgKiBkb20vVGV4dERlY29kZXIuaWRsOgorICAgICAgICAqIGRvbS9UZXh0
RGVjb2RlclN0cmVhbURlY29kZXIuaWRsOgorICAgICAgICAqIGRvbS9UZXh0RW5jb2Rlci5pZGw6
CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6RGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKToK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6V29ya2VyT3JXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlcik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRD
b250cm9sbGVyLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWRUeXBlLmg6IEFkZGVk
LgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxT
Y29wZSk6CisKIDIwMjAtMTEtMTYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgog
CiAgICAgICAgIElnbm9yZSBkZXByZWNhdGlvbiB3YXJuaW5ncyBmb3IgdGhlIHVuaWZvcm0gdHlw
ZXMgQyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzOGFlNmNlMTFh
ODliYjJjYTY1N2M1OGNmODJkN2U0NzUxOGE5OTUxLi4wNTMzYTgxZmQ5NjEzN2JlOTYwN2M2N2Yy
M2UyMDMxOWNmNDAxNjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0x
MDg4LDYgKzEwODgsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIHdhc20vV2FzbVRpZXJVcENvdW50LmgKIAogICAgIHdhc20vanMvSlNXZWJBc3Nl
bWJseS5oCisgICAgd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmgKICAgICB3YXNtL2pzL0pT
V2ViQXNzZW1ibHlNb2R1bGUuaAogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
YzBlZWYwYmMzMGUwMmNkODc2YzkzMTJkNzFlZDZlMDEyN2QzZTQ1OC4uYmMwM2M3OGNiMTE4MWZm
MjIzOWFlMWIxMWQzZjQ0YzhlYTRmZDgwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTE1NzQsNyArMTU3NCw3IEBACiAJCUFEMDA2NTlFMUVDQUM4MTIwMDBDQTkyNiAvKiBXYXNt
TGltaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
RDAwNjU5RDFFQ0FDN0ZFMDAwQ0E5MjYgLyogV2FzbUxpbWl0cy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFEMkZDQkUzMURCNThEQUQwMEIzRTcz
NiAvKiBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JBNzFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJB
c3NlbWJseUNvbXBpbGVFcnJvci5oICovOyB9OwogCQlBRDJGQ0JFNTFEQjU4REFEMDBCM0U3MzYg
LyogSlNXZWJBc3NlbWJseUluc3RhbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JBOTFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJs
eUluc3RhbmNlLmggKi87IH07Ci0JCUFEMkZDQkU3MURCNThEQUQwMEIzRTczNiAvKiBKU1dlYkFz
c2VtYmx5TWVtb3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBRDJGQ0JBQjFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1lbW9yeS5oICov
OyB9OworCQlBRDJGQ0JFNzFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1lbW9yeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQUIx
REI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNZW1vcnkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBRDJGQ0JFOTFEQjU4REFEMDBCM0U3
MzYgLyogSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQUQxREI1OERBNDAwQjNFNzM2IC8qIEpTV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3IuaCAqLzsgfTsKIAkJQUQyRkNCRUIxREI1OERBRDAwQjNFNzM2
IC8qIEpTV2ViQXNzZW1ibHlUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQUQyRkNCQUYxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlU
YWJsZS5oICovOyB9OwogCQlBRDJGQ0JFRDFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQUQyRkNCQjExREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29t
cGlsZUVycm9yQ29uc3RydWN0b3IuaCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFBDUmFuZ2VzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRQQ1Jhbmdlcy5oCmluZGV4IDQ0ZjRlZjkxMDNkN2UyMTYyOTU5ZGZhNTY4MmVhNmNi
MWI1Mjg3MTMuLjY0YjJkZTg5MjRlODcxZDk0ZmJhY2RhMmZkMTBkODgyN2FiMjBjMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFBDUmFuZ2VzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50UENSYW5nZXMuaApAQCAtMzUsNiArMzUs
MTAgQEAgbmFtZXNwYWNlIExMSW50IHsKIGV4dGVybiAiQyIgewogICAgIHZvaWQgbGxpbnRQQ1Jh
bmdlU3RhcnQoKTsKICAgICB2b2lkIGxsaW50UENSYW5nZUVuZCgpOworI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKKyAgICB2b2lkIHdhc21MTEludFBDUmFuZ2VTdGFydCgpOworICAgIHZvaWQgd2Fz
bUxMSW50UENSYW5nZUVuZCgpOworI2VuZGlmCiB9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBpc0xM
SW50UEModm9pZCogcGMpCkBAIC00Niw2ICs1MCwxNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNM
TEludFBDKHZvaWQqIHBjKQogICAgIHJldHVybiBsbGludFN0YXJ0IDw9IHBjQXNJbnQgJiYgcGNB
c0ludCA8PSBsbGludEVuZDsKIH0KIAorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKK0FMV0FZU19J
TkxJTkUgYm9vbCBpc1dhc21MTEludFBDKHZvaWQqIHBjKQoreworICAgIHVpbnRwdHJfdCBwY0Fz
SW50ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ocGMpOworICAgIHVpbnRwdHJfdCBzdGFydCA9
IHVudGFnQ29kZVB0cjx1aW50cHRyX3QsIENGdW5jdGlvblB0clRhZz4od2FzbUxMSW50UENSYW5n
ZVN0YXJ0KTsKKyAgICB1aW50cHRyX3QgZW5kID0gdW50YWdDb2RlUHRyPHVpbnRwdHJfdCwgQ0Z1
bmN0aW9uUHRyVGFnPih3YXNtTExJbnRQQ1JhbmdlRW5kKTsKKyAgICBSRUxFQVNFX0FTU0VSVChz
dGFydCA8IGVuZCk7CisgICAgcmV0dXJuIHN0YXJ0IDw9IHBjQXNJbnQgJiYgcGNBc0ludCA8PSBl
bmQ7Cit9CisjZW5kaWYKKwogI2lmICFFTkFCTEUoQ19MT09QKQogc3RhdGljIGNvbnN0ZXhwciBH
UFJSZWcgTExJbnRQQyA9IEdQUkluZm86OnJlZ1Q0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggODNlMjRh
MDgyMTBiOTVlYjg3MDAzYmNlZTE2ODNhMDk4YThmNDg2Ny4uYmVkNWNkZjVlMmE5MzQyMjc0MjE4
N2QwMzNiYWRmMGYzNWFlMDRkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMjQ2Nyw3ICsyNDY3LDEyIEBAIG1hY3Jv
IHdhc21TY29wZSgpCiAgICAgIyBidXQgd2UgZG9uJ3Qgd2FudCB0byBpbnRlcmZlcmUgd2l0aCB0
aGUgTExJbnQgb3Bjb2RlcwogICAgIGluY2x1ZGUgV2ViQXNzZW1ibHkKIGVuZAorCitnbG9iYWwg
X3dhc21MTEludFBDUmFuZ2VTdGFydAorX3dhc21MTEludFBDUmFuZ2VTdGFydDoKIHdhc21TY29w
ZSgpCitnbG9iYWwgX3dhc21MTEludFBDUmFuZ2VFbmQKK193YXNtTExJbnRQQ1JhbmdlRW5kOgog
CiBlbHNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3Nl
bWJseS5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCmlu
ZGV4IDhiZmZjOGE2OTdkMmU2ZTRmMjBkZTk2NDA1YTVmM2QyNGY4YTFlYmMuLmRmOGJiZmExZDQ3
NDA0YjcwN2I3ZGNkZmM5YmQzZmY2ZmUzMjkxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L1dlYkFzc2VtYmx5LmFzbQpAQCAtNDUsNyArNDUsNyBAQCBjb25zdCBOdW1iZXJPZldh
c21Bcmd1bWVudHMgPSBOdW1iZXJPZldhc21Bcmd1bWVudEdQUnMgKyBOdW1iZXJPZldhc21Bcmd1
bWVudEZQUgogIyBUaGVzZSBtdXN0IG1hdGNoIHRoZSBkZWZpbml0aW9uIGluIFdhc21NZW1vcnlJ
bmZvcm1hdGlvbi5jcHAKIGNvbnN0IHdhc21JbnN0YW5jZSA9IGNzcjAKIGNvbnN0IG1lbW9yeUJh
c2UgPSBjc3IzCi1jb25zdCBtZW1vcnlTaXplID0gY3NyNAorY29uc3QgYm91bmRzQ2hlY2tpbmdT
aXplID0gY3NyNAogCiAjIFRoaXMgbXVzdCBtYXRjaCB0aGUgZGVmaW5pdGlvbiBpbiBMb3dMZXZl
bEludGVycHJldGVyLmFzbQogaWYgWDg2XzY0CkBAIC0xODcsNyArMTg3LDcgQEAgZW5kCiAjIFdh
c20gc3BlY2lmaWMgaGVscGVycwogCiBtYWNybyBwcmVzZXJ2ZUNhbGxlZVNhdmVzVXNlZEJ5V2Fz
bSgpCi0gICAgIyBOT1RFOiBXZSBpbnRlbnRpb25hbGx5IGRvbid0IHNhdmUgbWVtb3J5QmFzZSBh
bmQgbWVtb3J5U2l6ZSBoZXJlLiBTZWUgdGhlIGNvbW1lbnQKKyAgICAjIE5PVEU6IFdlIGludGVu
dGlvbmFsbHkgZG9uJ3Qgc2F2ZSBtZW1vcnlCYXNlIGFuZCBib3VuZHNDaGVja2luZ1NpemUgaGVy
ZS4gU2VlIHRoZSBjb21tZW50CiAgICAgIyBpbiByZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlXYXNt
KCkgYmVsb3cgZm9yIHdoeS4KICAgICBzdWJwIENhbGxlZVNhdmVTcGFjZVN0YWNrQWxpZ25lZCwg
c3AKICAgICBpZiBBUk02NCBvciBBUk02NEUKQEAgLTIwMSw3ICsyMDEsNyBAQCBtYWNybyBwcmVz
ZXJ2ZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgpCiBlbmQKIAogbWFjcm8gcmVzdG9yZUNhbGxlZVNh
dmVzVXNlZEJ5V2FzbSgpCi0gICAgIyBOT1RFOiBXZSBpbnRlbnRpb25hbGx5IGRvbid0IHJlc3Rv
cmUgbWVtb3J5QmFzZSBhbmQgbWVtb3J5U2l6ZSBoZXJlLiBUaGVzZSBhcmUgc2F2ZWQKKyAgICAj
IE5PVEU6IFdlIGludGVudGlvbmFsbHkgZG9uJ3QgcmVzdG9yZSBtZW1vcnlCYXNlIGFuZCBib3Vu
ZHNDaGVja2luZ1NpemUgaGVyZS4gVGhlc2UgYXJlIHNhdmVkCiAgICAgIyBhbmQgcmVzdG9yZWQg
d2hlbiBlbnRlcmluZyBXYXNtIGJ5IHRoZSBKU1RvV2FzbSB3cmFwcGVyIGFuZCBjaGFuZ2VzIHRv
IHRoZW0gYXJlIG1lYW50CiAgICAgIyB0byBiZSBvYnNlcnZhYmxlIHdpdGhpbiB0aGUgc2FtZSBX
YXNtIG1vZHVsZS4KICAgICBpZiBBUk02NCBvciBBUk02NEUKQEAgLTI0MCw4ICsyNDAsOCBAQCBl
bmQKIAogbWFjcm8gcmVsb2FkTWVtb3J5UmVnaXN0ZXJzRnJvbUluc3RhbmNlKGluc3RhbmNlLCBz
Y3JhdGNoMSwgc2NyYXRjaDIpCiAgICAgbG9hZHAgV2FzbTo6SW5zdGFuY2U6Om1fY2FjaGVkTWVt
b3J5W2luc3RhbmNlXSwgbWVtb3J5QmFzZQotICAgIGxvYWRpIFdhc206Okluc3RhbmNlOjptX2Nh
Y2hlZE1lbW9yeVNpemVbaW5zdGFuY2VdLCBtZW1vcnlTaXplCi0gICAgY2FnZWRQcmltaXRpdmUo
bWVtb3J5QmFzZSwgbWVtb3J5U2l6ZSwgc2NyYXRjaDEsIHNjcmF0Y2gyKQorICAgIGxvYWRpIFdh
c206Okluc3RhbmNlOjptX2NhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZVtpbnN0YW5jZV0sIGJvdW5k
c0NoZWNraW5nU2l6ZQorICAgIGNhZ2VkUHJpbWl0aXZlKG1lbW9yeUJhc2UsIGJvdW5kc0NoZWNr
aW5nU2l6ZSwgc2NyYXRjaDEsIHNjcmF0Y2gyKQogZW5kCiAKIG1hY3JvIHRocm93RXhjZXB0aW9u
KGV4Y2VwdGlvbikKQEAgLTg1Niw3ICs4NTYsOSBAQCB3YXNtT3AoY2FsbF9pbmRpcmVjdF9ub190
bHMsIFdhc21DYWxsSW5kaXJlY3ROb1RscywgbWFjcm8oY3R4KQogZW5kKQogCiB3YXNtT3AoY3Vy
cmVudF9tZW1vcnksIFdhc21DdXJyZW50TWVtb3J5LCBtYWNybyhjdHgpCi0gICAgbG9hZHAgV2Fz
bTo6SW5zdGFuY2U6Om1fY2FjaGVkTWVtb3J5U2l6ZVt3YXNtSW5zdGFuY2VdLCB0MAorICAgIGxv
YWRwIFdhc206Okluc3RhbmNlOjptX21lbW9yeVt3YXNtSW5zdGFuY2VdLCB0MAorICAgIGxvYWRw
IFdhc206Ok1lbW9yeTo6bV9oYW5kbGVbdDBdLCB0MAorICAgIGxvYWRwIFdhc206Ok1lbW9yeUhh
bmRsZTo6bV9zaXplW3QwXSwgdDAKICAgICB1cnNoaWZ0cSAxNiwgdDAKICAgICByZXR1cm5xKGN0
eCwgdDApCiBlbmQpCkBAIC04NzQsNyArODc2LDcgQEAgZW5kKQogIyB1c2VzIG9mZnNldCBhcyBz
Y3JhdGNoIGFuZCByZXR1cm5zIHJlc3VsdCBvbiBwb2ludGVyCiBtYWNybyBlbWl0Q2hlY2tBbmRQ
cmVwYXJlUG9pbnRlcihjdHgsIHBvaW50ZXIsIG9mZnNldCwgc2l6ZSkKICAgICBsZWFwIHNpemUg
LSAxW3BvaW50ZXIsIG9mZnNldF0sIHQ1Ci0gICAgYnBiIHQ1LCBtZW1vcnlTaXplLCAuY29udGlu
dWF0aW9uCisgICAgYnBiIHQ1LCBib3VuZHNDaGVja2luZ1NpemUsIC5jb250aW51YXRpb24KICAg
ICB0aHJvd0V4Y2VwdGlvbihPdXRPZkJvdW5kc01lbW9yeUFjY2VzcykKIC5jb250aW51YXRpb246
CiAgICAgYWRkcCBtZW1vcnlCYXNlLCBwb2ludGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyLmgKaW5kZXggNmJlYTRjZmYxNDkxZjk5NGFiYzNlODA1NmU2
YjQzYzQzMTUyNWRjZi4uYWU0Y2Y2MWE1NTkyOGNhZmU5NTI5ZmIyN2UxZTA5N2QxMjBiOWNhOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaApAQCAt
NTUsNiArNTUsNyBAQCBjbGFzcyBKU0FycmF5QnVmZmVyIGZpbmFsIDogcHVibGljIEpTTm9uRmlu
YWxPYmplY3QgewogICAgIAogICAgIC8vIFRoaXMgaXMgdGhlIGRlZmF1bHQgRE9NIHVud3JhcHBp
bmcuIEl0IGNhbGxzIHRvVW5zaGFyZWRBcnJheUJ1ZmZlcigpLgogICAgIHN0YXRpYyBBcnJheUJ1
ZmZlciogdG9XcmFwcGVkKFZNJiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIEFycmF5QnVmZmVyKiB0
b1dyYXBwZWRBbGxvd1NoYXJlZChWTSYsIEpTVmFsdWUpOwogICAgIAogcHJpdmF0ZToKICAgICBK
U0FycmF5QnVmZmVyKFZNJiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKQEAg
LTg2LDQgKzg3LDkgQEAgaW5saW5lIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyOjp0b1dyYXBw
ZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiB0b1Vuc2hhcmVkQXJyYXlCdWZm
ZXIodm0sIHZhbHVlKTsKIH0KIAoraW5saW5lIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyOjp0
b1dyYXBwZWRBbGxvd1NoYXJlZChWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJu
IHRvUG9zc2libHlTaGFyZWRBcnJheUJ1ZmZlcih2bSwgdmFsdWUpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlldy5oCmluZGV4IDNiMDZlMjhjOGMwMjM2ZDViYWYyZTdlNjQ4ZmZlYzVkMTNmZTYxMmEu
LmQ2ODQ4NzBlNzdmODY1Zjg5MTg4OGU1ZDllMzE3MWYxNDllYmQ0NTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaApAQCAtMjA0LDYg
KzIwNCw3IEBAIGNsYXNzIEpTQXJyYXlCdWZmZXJWaWV3IDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgewogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNb2RlKCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEpTQXJyYXlCdWZmZXJWaWV3LCBtX21vZGUpOyB9CiAgICAgCiAgICAgc3RhdGlj
IFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IHRvV3JhcHBlZChWTSYsIEpTVmFsdWUpOworICAgIHN0
YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiB0b1dyYXBwZWRBbGxvd1NoYXJlZChWTSYsIEpT
VmFsdWUpOwogCiBwcml2YXRlOgogICAgIGVudW0gUmVxdWVzdGVyIHsgTXV0YXRvciwgQ29uY3Vy
cmVudFRocmVhZCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAppbmRleCA0ZmQ3ZWVmNjZiZGMyODIwYjQwZWY1
NGZkZTY4OWE2ZjY1NDYwZDE1Li45ODRmOWEyMGI3YzVmMzA5YWI5OTk5ZTA2ZjRmMDEyMDc4NmRh
MGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyVmlld0lubGluZXMuaApAQCAtMTI5LDQgKzEyOSwxMiBAQCBpbmxpbmUgUmVmUHRy
PEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnRvV3JhcHBlZChWTSYgdm0sIEpT
VmFsdWUgdmFsdQogICAgIHJldHVybiBudWxscHRyOwogfQogCitpbmxpbmUgUmVmUHRyPEFycmF5
QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnRvV3JhcHBlZEFsbG93U2hhcmVkKFZNJiB2
bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBq
c0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4odm0sIHZhbHVlKSkKKyAgICAgICAgcmV0
dXJuIHZpZXctPnBvc3NpYmx5U2hhcmVkSW1wbCgpOworICAgIHJldHVybiBudWxscHRyOworfQor
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggZThjMzFkODA3MDA5Nzc5
NWE0ZDA0YjA0M2UzMjlhNDZiNjM4MjM5Ny4uY2ViNDg1MWFjYTJjN2UxZDIxNDUwNTM0ODZiYTUy
MGI1ODRjNGMyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0yODcsNiArMjg3LDggQEAgY2xhc3MgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcgZmluYWwgOiBwdWJsaWMgSlNBcnJheUJ1ZmZlclZpZXcgewog
CiAgICAgLy8gVGhpcyBpcyB0aGUgZGVmYXVsdCBET00gdW53cmFwcGluZy4gSXQgY2FsbHMgdG9V
bnNoYXJlZE5hdGl2ZVR5cGVkVmlldygpLgogICAgIHN0YXRpYyBSZWZQdHI8dHlwZW5hbWUgQWRh
cHRvcjo6Vmlld1R5cGU+IHRvV3JhcHBlZChWTSYsIEpTVmFsdWUpOworICAgIC8vIFtBbGxvd1No
YXJlZF0gYW5ub3RhdGlvbiBhbGxvd3MgYWNjZXB0aW5nIFR5cGVkQXJyYXkgb3JpZ2luYXRlZCBm
cm9tIFNoYXJlZEFycmF5QnVmZmVyLgorICAgIHN0YXRpYyBSZWZQdHI8dHlwZW5hbWUgQWRhcHRv
cjo6Vmlld1R5cGU+IHRvV3JhcHBlZEFsbG93U2hhcmVkKFZNJiwgSlNWYWx1ZSk7CiAgICAgCiBw
cml2YXRlOgogICAgIGZyaWVuZCBzdHJ1Y3QgVHlwZWRBcnJheUNsYXNzSW5mb3M7CkBAIC0zOTIs
NCArMzk0LDExIEBAIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRvV3JhcHBlZChWCiAgICAgcmV0dXJuIEpTQzo6dG9V
bnNoYXJlZE5hdGl2ZVR5cGVkVmlldzxBZGFwdG9yPih2bSwgdmFsdWUpOwogfQogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBBZGFwdG9yPgorUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dG9XcmFwcGVkQWxsb3dTaGFyZWQoVk0m
IHZtLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIHJldHVybiBKU0M6OnRvUG9zc2libHlTaGFyZWRO
YXRpdmVUeXBlZFZpZXc8QWRhcHRvcj4odm0sIHZhbHVlKTsKK30KKworCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKaW5kZXggOTU4
OTg5YzkyM2E0ZmFjYmY2NTc1Y2RkZjlmMTJlZDVlYWUxOGYyOC4uYzI3YjE1NmIxOWIwMGY0OWJj
NmUwYjk4ZjA4NDZhYjA2MjM4MGZmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5jcHAKQEAgLTM2Nyw2ICszNjcsNyBAQCBzdGF0aWMgdm9pZCBvdmVycmlkZURlZmF1
bHRzKCkKIAogI2lmICFFTkFCTEUoV0VCQVNTRU1CTFlfRkFTVF9NRU1PUlkpCiAgICAgT3B0aW9u
czo6dXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCkgPSBmYWxzZTsKKyAgICBPcHRpb25zOjp1c2VT
aGFyZWRBcnJheUJ1ZmZlcigpID0gZmFsc2U7CiAjZW5kaWYKIAogI2lmICFIQVZFKE1BQ0hfRVhD
RVBUSU9OUykKQEAgLTY1OSwxMyArNjYwLDE0IEBAIHZvaWQgT3B0aW9uczo6aW5pdGlhbGl6ZSgp
CiAjZW5kaWYKIAogI2lmIEFTQU5fRU5BQkxFRCAmJiBPUyhMSU5VWCkgJiYgRU5BQkxFKFdFQkFT
U0VNQkxZX0ZBU1RfTUVNT1JZKQotICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2Vt
Ymx5RmFzdE1lbW9yeSgpKSB7CisgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1i
bHlGYXN0TWVtb3J5KCkgfHwgT3B0aW9uczo6dXNlU2hhcmVkQXJyYXlCdWZmZXIoKSkgewogICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFzYW5PcHRpb25zID0gZ2V0ZW52KCJBU0FOX09QVElP
TlMiKTsKICAgICAgICAgICAgICAgICBib29sIG9rVG9Vc2VXZWJBc3NlbWJseUZhc3RNZW1vcnkg
PSBhc2FuT3B0aW9ucwogICAgICAgICAgICAgICAgICAgICAmJiAoc3Ryc3RyKGFzYW5PcHRpb25z
LCAiYWxsb3dfdXNlcl9zZWd2X2hhbmRsZXI9MSIpIHx8IHN0cnN0cihhc2FuT3B0aW9ucywgImhh
bmRsZV9zZWd2PTAiKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFva1RvVXNlV2ViQXNzZW1ibHlG
YXN0TWVtb3J5KSB7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiV0FSTklORzogQVNB
TiBpbnRlcmZlcmVzIHdpdGggSlNDIHNpZ25hbCBoYW5kbGVyczsgdXNlV2ViQXNzZW1ibHlGYXN0
TWVtb3J5IHdpbGwgYmUgZGlzYWJsZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dM
bigiV0FSTklORzogQVNBTiBpbnRlcmZlcmVzIHdpdGggSlNDIHNpZ25hbCBoYW5kbGVyczsgdXNl
V2ViQXNzZW1ibHlGYXN0TWVtb3J5IGFuZCB1c2VTaGFyZWRBcnJheUJ1ZmZlciB3aWxsIGJlIGRp
c2FibGVkLiIpOwogICAgICAgICAgICAgICAgICAgICBPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZh
c3RNZW1vcnkoKSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBPcHRpb25zOjp1c2VTaGFy
ZWRBcnJheUJ1ZmZlcigpID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWly
SVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2Vu
ZXJhdG9yLmNwcAppbmRleCA0M2QwYzg3MmVlNGM2M2I0ZDU2YjZmMGUzNDYyMzUzMzNlODRiNzkz
Li5mMDM3ZGExMzM5ZDM3YzJiYmFlM2E5ZWI4Y2YzMDY1NGYxMjIyMzc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTY4MCw3
ICs2ODAsNyBAQCBjbGFzcyBBaXJJUkdlbmVyYXRvciB7CiAgICAgVmVjdG9yPFR5cGVkVG1wPiBt
X2xvY2FsczsKICAgICBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIG1fdW5saW5rZWRX
YXNtVG9XYXNtQ2FsbHM7IC8vIExpc3QgZWFjaCBjYWxsIHNpdGUgYW5kIHRoZSBmdW5jdGlvbiBp
bmRleCB3aG9zZSBhZGRyZXNzIGl0IHNob3VsZCBiZSBwYXRjaGVkIHdpdGguCiAgICAgR1BSUmVn
IG1fbWVtb3J5QmFzZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKLSAgICBHUFJSZWcgbV9tZW1vcnlT
aXplR1BSIHsgSW52YWxpZEdQUlJlZyB9OworICAgIEdQUlJlZyBtX2JvdW5kc0NoZWNraW5nU2l6
ZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKICAgICBHUFJSZWcgbV93YXNtQ29udGV4dEluc3RhbmNl
R1BSIHsgSW52YWxpZEdQUlJlZyB9OwogICAgIGJvb2wgbV9tYWtlc0NhbGxzIHsgZmFsc2UgfTsK
IApAQCAtNzcyLDggKzc3Miw4IEBAIEFpcklSR2VuZXJhdG9yOjpBaXJJUkdlbmVyYXRvcihjb25z
dCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgQjM6OlByb2NlZHVyZSYgcHJvCiAgICAgICAgIG1f
Y29kZS5waW5SZWdpc3RlcihtX3dhc21Db250ZXh0SW5zdGFuY2VHUFIpOwogCiAgICAgaWYgKG1v
ZGUgIT0gTWVtb3J5TW9kZTo6U2lnbmFsaW5nKSB7Ci0gICAgICAgIG1fbWVtb3J5U2l6ZUdQUiA9
IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyOwotICAgICAgICBtX2NvZGUucGluUmVnaXN0ZXIobV9t
ZW1vcnlTaXplR1BSKTsKKyAgICAgICAgbV9ib3VuZHNDaGVja2luZ1NpemVHUFIgPSBwaW5uZWRS
ZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyOworICAgICAgICBtX2NvZGUucGluUmVnaXN0
ZXIobV9ib3VuZHNDaGVja2luZ1NpemVHUFIpOwogICAgIH0KIAogICAgIG1fY29kZS5zZXROdW1F
bnRyeXBvaW50cygxKTsKQEAgLTkxOCw3ICs5MTgsNyBAQCB2b2lkIEFpcklSR2VuZXJhdG9yOjpy
ZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVkU3RhY2tMaW1pdCByZXN0
bwogICAgICAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8qIHBpbm5lZFJlZ3MgPSAmUGlubmVk
UmVnaXN0ZXJJbmZvOjpnZXQoKTsKICAgICAgICAgUmVnaXN0ZXJTZXQgY2xvYmJlcnM7CiAgICAg
ICAgIGNsb2JiZXJzLnNldChwaW5uZWRSZWdzLT5iYXNlTWVtb3J5UG9pbnRlcik7Ci0gICAgICAg
IGNsb2JiZXJzLnNldChwaW5uZWRSZWdzLT5zaXplUmVnaXN0ZXIpOworICAgICAgICBjbG9iYmVy
cy5zZXQocGlubmVkUmVncy0+Ym91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIpOwogICAgICAgICBp
ZiAoIWlzQVJNNjQoKSkKICAgICAgICAgICAgIGNsb2JiZXJzLnNldChSZWdpc3RlclNldDo6bWFj
cm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogCkBAIC05MzMsMTIgKzkzMywxMiBAQCB2b2lkIEFpcklS
R2VuZXJhdG9yOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVkU3Rh
Y2tMaW1pdCByZXN0bwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoW3Bpbm5lZFJl
Z3NdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYgcGFyYW1zKSB7CiAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2Ug
YWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICBHUFJSZWcgYmFzZU1lbW9yeSA9IHBpbm5l
ZFJlZ3MtPmJhc2VNZW1vcnlQb2ludGVyOwotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hPclNp
emUgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUpID8gcGFyYW1zLmdw
U2NyYXRjaCgwKSA6IHBpbm5lZFJlZ3MtPnNpemVSZWdpc3RlcjsKKyAgICAgICAgICAgIEdQUlJl
ZyBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2Fj
YWdlOjpQcmltaXRpdmUpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IHBpbm5lZFJlZ3MtPmJvdW5k
c0NoZWNraW5nU2l6ZVJlZ2lzdGVyOwogCi0gICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MocGFyYW1zWzBdLmdwcigpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRN
ZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLT5zaXplUmVnaXN0ZXIpOworICAgICAgICAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhcmFtc1swXS5ncHIoKSwgSW5zdGFuY2U6
Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkpLCBwaW5uZWRSZWdzLT5ib3VuZHND
aGVja2luZ1NpemVSZWdpc3Rlcik7CiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MocGFyYW1zWzBdLmdwcigpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1v
cnkoKSksIGJhc2VNZW1vcnkpOwogCi0gICAgICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHko
R2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgcGlubmVkUmVncy0+c2l6ZVJlZ2lzdGVy
LCBzY3JhdGNoT3JTaXplKTsKKyAgICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdh
Y2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLT5ib3VuZHNDaGVja2luZ1Np
emVSZWdpc3Rlciwgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplKTsKICAgICAgICAgfSk7CiAK
ICAgICAgICAgZW1pdFBhdGNocG9pbnQoYmxvY2ssIHBhdGNocG9pbnQsIFRtcCgpLCBpbnN0YW5j
ZSk7CkBAIC0xMTY4LDggKzExNjgsMTIgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ3VycmVu
dE1lbW9yeShFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgYXV0
byB0ZW1wMSA9IGc2NCgpOwogICAgIGF1dG8gdGVtcDIgPSBnNjQoKTsKIAotICAgIFJFTEVBU0Vf
QVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9y
eVNpemUoKSwgQjM6OldpZHRoNjQpKTsKLSAgICBhcHBlbmQoTW92ZSwgQXJnOjphZGRyKGluc3Rh
bmNlVmFsdWUoKSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSwgdGVtcDEp
OworICAgIFJFTEVBU0VfQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEluc3RhbmNlOjpvZmZz
ZXRPZk1lbW9yeSgpLCBCMzo6V2lkdGg2NCkpOworICAgIFJFTEVBU0VfQVNTRVJUKEFyZzo6aXNW
YWxpZEFkZHJGb3JtKE1lbW9yeTo6b2Zmc2V0T2ZIYW5kbGUoKSwgQjM6OldpZHRoNjQpKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChBcmc6OmlzVmFsaWRBZGRyRm9ybShNZW1vcnlIYW5kbGU6Om9mZnNl
dE9mU2l6ZSgpLCBCMzo6V2lkdGg2NCkpOworICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoaW5z
dGFuY2VWYWx1ZSgpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSksIHRlbXAxKTsKKyAgICBh
cHBlbmQoTW92ZSwgQXJnOjphZGRyKHRlbXAxLCBNZW1vcnk6Om9mZnNldE9mSGFuZGxlKCkpLCB0
ZW1wMSk7CisgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcih0ZW1wMSwgTWVtb3J5SGFuZGxlOjpv
ZmZzZXRPZlNpemUoKSksIHRlbXAxKTsKICAgICBjb25zdGV4cHIgdWludDMyX3Qgc2hpZnRWYWx1
ZSA9IDE2OwogICAgIHN0YXRpY19hc3NlcnQoUGFnZUNvdW50OjpwYWdlU2l6ZSA9PSAxdWxsIDw8
IHNoaWZ0VmFsdWUsICJUaGlzIG11c3QgaG9sZCBmb3IgdGhlIGNvZGUgYmVsb3cgdG8gYmUgY29y
cmVjdC4iKTsKICAgICBhcHBlbmQoTW92ZSwgQXJnOjppbW0oMTYpLCB0ZW1wMik7CkBAIC0xMzYz
LDE1ICsxMzY3LDE2IEBAIGlubGluZSBBaXJJUkdlbmVyYXRvcjo6RXhwcmVzc2lvblR5cGUgQWly
SVJHZW5lcmF0b3I6OmVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyCiAKICAgICBzd2l0Y2ggKG1f
bW9kZSkgewogICAgIGNhc2UgTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmc6IHsKLSAgICAgICAg
Ly8gV2UncmUgbm90IHVzaW5nIHNpZ25hbCBoYW5kbGluZyBhdCBhbGwsIHdlIG11c3QgdGhlcmVm
b3JlIGNoZWNrIHRoYXQgbm8gbWVtb3J5IGFjY2VzcyBleGNlZWRzIHRoZSBjdXJyZW50IG1lbW9y
eSBzaXplLgotICAgICAgICBBU1NFUlQobV9tZW1vcnlTaXplR1BSKTsKKyAgICAgICAgLy8gSW4g
Ym91bmQgY2hlY2tpbmcgbW9kZSwgd2hpbGUgc2hhcmVkIHdhc20gbWVtb3J5IHBhcnRpYWxseSBy
ZWxpZXMgb24gc2lnbmFsIGhhbmRsZXIgdG9vLCB3ZSBuZWVkIHRvIHBlcmZvcm0gYm91bmQgY2hl
Y2tpbmcKKyAgICAgICAgLy8gdG8gZW5zdXJlIHRoYXQgbm8gbWVtb3J5IGFjY2VzcyBleGNlZWRz
IHRoZSBjdXJyZW50IG1lbW9yeSBzaXplLgorICAgICAgICBBU1NFUlQobV9ib3VuZHNDaGVja2lu
Z1NpemVHUFIpOwogICAgICAgICBBU1NFUlQoc2l6ZU9mT3BlcmF0aW9uICsgb2Zmc2V0ID4gb2Zm
c2V0KTsKICAgICAgICAgYXV0byB0ZW1wID0gZzY0KCk7CiAgICAgICAgIGFwcGVuZChNb3ZlLCBB
cmc6OmJpZ0ltbShzdGF0aWNfY2FzdDx1aW50NjRfdD4oc2l6ZU9mT3BlcmF0aW9uKSArIG9mZnNl
dCAtIDEpLCB0ZW1wKTsKICAgICAgICAgYXBwZW5kKEFkZDY0LCByZXN1bHQsIHRlbXApOwogCiAg
ICAgICAgIGVtaXRDaGVjayhbJl0gewotICAgICAgICAgICAgcmV0dXJuIEluc3QoQnJhbmNoNjQs
IG51bGxwdHIsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsKSwgdGVt
cCwgVG1wKG1fbWVtb3J5U2l6ZUdQUikpOworICAgICAgICAgICAgcmV0dXJuIEluc3QoQnJhbmNo
NjQsIG51bGxwdHIsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsKSwg
dGVtcCwgVG1wKG1fYm91bmRzQ2hlY2tpbmdTaXplR1BSKSk7CiAgICAgICAgIH0sIFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAg
ICAgICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBlOjpP
dXRPZkJvdW5kc01lbW9yeUFjY2Vzcyk7CiAgICAgICAgIH0pOwpAQCAtMjE1NCw3ICsyMTU5LDcg
QEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBj
b25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwKICAgICAgICAgYXV0byogcGF0Y2hwb2ludCA9IGVt
aXRDYWxsUGF0Y2hwb2ludChtX2N1cnJlbnRCbG9jaywgc2lnbmF0dXJlLCByZXN1bHRzLCBhcmdz
KTsKICAgICAgICAgLy8gV2UgbmVlZCB0byBjbG9iYmVyIHRoZSBzaXplIHJlZ2lzdGVyIHNpbmNl
IHRoZSBMTEludCBhbHdheXMgYm91bmRzIGNoZWNrcwogICAgICAgICBpZiAobV9tb2RlID09IE1l
bW9yeU1vZGU6OlNpZ25hbGluZykKLSAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRl
KFJlZ2lzdGVyU2V0IHsgUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS5zaXplUmVnaXN0ZXIgfSk7
CisgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldCB7IFBpbm5l
ZFJlZ2lzdGVySW5mbzo6Z2V0KCkuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgfSk7CiAgICAg
ICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIGZ1
bmN0aW9uSW5kZXhdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxs
ID0gaml0LnRocmVhZFNhZmVQYXRjaGFibGVOZWFyQ2FsbCgpOwpAQCAtMjI3OCwxMyArMjI4Mywx
MyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJ
bmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYQogICAgICAgICAgICAgaml0LnN0b3JlV2FzbUNv
bnRleHRJbnN0YW5jZShuZXdDb250ZXh0SW5zdGFuY2UpOwogICAgICAgICAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBzdXBwb3J0IG1vcmUgdGhhbiBvbmUgbWVtb3J5IHNpemUgcmVnaXN0ZXIKICAg
ICAgICAgICAgIC8vICAgc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYyOTUyCi0gICAgICAgICAgICBBU1NFUlQocGlubmVkUmVncy5zaXplUmVnaXN0ZXIgIT0g
bmV3Q29udGV4dEluc3RhbmNlKTsKLSAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoT3JTaXplID0g
R2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IHBhcmFtcy5ncFNjcmF0
Y2goMCkgOiBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcjsKKyAgICAgICAgICAgIEFTU0VSVChwaW5u
ZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyICE9IG5ld0NvbnRleHRJbnN0YW5jZSk7
CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplID0gR2lnYWNh
Z2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkg
OiBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyOwogCi0gICAgICAgICAgICBq
aXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobmV3Q29udGV4dEluc3RhbmNlLCBJbnN0
YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rl
cik7IC8vIE1lbW9yeSBzaXplLgorICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKG5ld0NvbnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91
bmRzQ2hlY2tpbmdTaXplKCkpLCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVy
KTsgLy8gQm91bmQgY2hlY2tpbmcgc2l6ZS4KICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxs
SGVscGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNh
Y2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7IC8vIE1lbW9yeTo6dm9pZCouCiAKLSAgICAgICAg
ICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5
LCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlciwgc2NyYXRjaE9yU2l6ZSk7CisgICAgICAgICAgICBq
aXQuY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgcGlu
bmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlciwgc2NyYXRjaE9yQm91bmRzQ2hlY2tp
bmdTaXplKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgZW1pdFBhdGNocG9pbnQoZG9Db250ZXh0
U3dpdGNoLCBwYXRjaHBvaW50LCBUbXAoKSwgbmV3Q29udGV4dEluc3RhbmNlLCBpbnN0YW5jZVZh
bHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwCmluZGV4IDMwYjNjNzcyMzJmMmRlZTVmNDU5M2E0YmM4OTk1NjU3ZjEzOThkZmIuLjk2
ZjNhYWNmOTZiNDIyMDExOGViY2ZlOGUxYzE4NWMyZDdmM2VjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTMyNSw3ICszMjUs
NyBAQCBjbGFzcyBCM0lSR2VuZXJhdG9yIHsKICAgICBJbnNlcnRpb25TZXQgbV9jb25zdGFudElu
c2VydGlvblZhbHVlczsKICAgICBWYWx1ZSogbV9mcmFtZVBvaW50ZXIgeyBudWxscHRyIH07CiAg
ICAgR1BSUmVnIG1fbWVtb3J5QmFzZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKLSAgICBHUFJSZWcg
bV9tZW1vcnlTaXplR1BSIHsgSW52YWxpZEdQUlJlZyB9OworICAgIEdQUlJlZyBtX2JvdW5kc0No
ZWNraW5nU2l6ZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKICAgICBHUFJSZWcgbV93YXNtQ29udGV4
dEluc3RhbmNlR1BSIHsgSW52YWxpZEdQUlJlZyB9OwogICAgIGJvb2wgbV9tYWtlc0NhbGxzIHsg
ZmFsc2UgfTsKIApAQCAtNDA4LDggKzQwOCw4IEBAIEIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0
b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFByb2NlZHVyZSYgcHJvY2VkdXJlCiAg
ICAgICAgIG1fcHJvYy5waW5SZWdpc3RlcihtX3dhc21Db250ZXh0SW5zdGFuY2VHUFIpOwogCiAg
ICAgaWYgKG1vZGUgIT0gTWVtb3J5TW9kZTo6U2lnbmFsaW5nKSB7Ci0gICAgICAgIG1fbWVtb3J5
U2l6ZUdQUiA9IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyOwotICAgICAgICBtX3Byb2MucGluUmVn
aXN0ZXIobV9tZW1vcnlTaXplR1BSKTsKKyAgICAgICAgbV9ib3VuZHNDaGVja2luZ1NpemVHUFIg
PSBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyOworICAgICAgICBtX3Byb2Mu
cGluUmVnaXN0ZXIobV9ib3VuZHNDaGVja2luZ1NpemVHUFIpOwogICAgIH0KIAogICAgIGlmIChp
bmZvLm1lbW9yeSkgewpAQCAtNDE3LDcgKzQxNyw3IEBAIEIzSVJHZW5lcmF0b3I6OkIzSVJHZW5l
cmF0b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFByb2NlZHVyZSYgcHJvY2VkdXJl
CiAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNo
KGppdCk7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fbW9kZSkgewogICAgICAgICAgICAgY2FzZSBN
ZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZzoKLSAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VE
KHBpbm5lZEdQUiwgbV9tZW1vcnlTaXplR1BSID09IHBpbm5lZEdQUik7CisgICAgICAgICAgICAg
ICAgQVNTRVJUX1VOVVNFRChwaW5uZWRHUFIsIG1fYm91bmRzQ2hlY2tpbmdTaXplR1BSID09IHBp
bm5lZEdQUik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIE1lbW9y
eU1vZGU6OlNpZ25hbGluZzoKICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHBpbm5lZEdQ
UiwgSW52YWxpZEdQUlJlZyA9PSBwaW5uZWRHUFIpOwpAQCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQg
QjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoUmVzdG9yZUNhY2hl
ZFN0YWNrTGltaXQgcmVzdG9yCiAgICAgICAgIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyogcGlu
bmVkUmVncyA9ICZQaW5uZWRSZWdpc3RlckluZm86OmdldCgpOwogICAgICAgICBSZWdpc3RlclNl
dCBjbG9iYmVyczsKICAgICAgICAgY2xvYmJlcnMuc2V0KHBpbm5lZFJlZ3MtPmJhc2VNZW1vcnlQ
b2ludGVyKTsKLSAgICAgICAgY2xvYmJlcnMuc2V0KHBpbm5lZFJlZ3MtPnNpemVSZWdpc3Rlcik7
CisgICAgICAgIGNsb2JiZXJzLnNldChwaW5uZWRSZWdzLT5ib3VuZHNDaGVja2luZ1NpemVSZWdp
c3Rlcik7CiAgICAgICAgIGlmICghaXNBUk02NCgpKQogICAgICAgICAgICAgY2xvYmJlcnMuc2V0
KFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAKQEAgLTU2MSwxMiArNTYx
LDEyIEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUo
UmVzdG9yZUNhY2hlZFN0YWNrTGltaXQgcmVzdG9yCiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdl
bmVyYXRvcihbcGlubmVkUmVnc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgIEFsbG93TWFjcm9TY3Jh
dGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgIEdQUlJlZyBi
YXNlTWVtb3J5ID0gcGlubmVkUmVncy0+YmFzZU1lbW9yeVBvaW50ZXI7Ci0gICAgICAgICAgICBH
UFJSZWcgc2NyYXRjaE9yU2l6ZSA9IEdpZ2FjYWdlOjppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1p
dGl2ZSkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogcGlubmVkUmVncy0+c2l6ZVJlZ2lzdGVyOwor
ICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSA9IEdpZ2FjYWdl
Ojppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDog
cGlubmVkUmVncy0+Ym91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXI7CiAKLSAgICAgICAgICAgIGpp
dC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCksIEluc3RhbmNl
OjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBpbm5lZFJlZ3MtPnNpemVSZWdpc3Rlcik7
CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFyYW1zWzBd
LmdwcigpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSksIHBp
bm5lZFJlZ3MtPmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsKICAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCksIEluc3RhbmNlOjpv
ZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7CiAKLSAgICAgICAgICAgIGppdC5j
YWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRS
ZWdzLT5zaXplUmVnaXN0ZXIsIHNjcmF0Y2hPclNpemUpOworICAgICAgICAgICAgaml0LmNhZ2VD
b25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJlZ3Mt
PmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUp
OwogICAgICAgICB9KTsKICAgICB9CiB9CkBAIC03OTMsNyArNzkzLDkgQEAgYXV0byBCM0lSR2Vu
ZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBlIGRlbHRhLCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KQogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBzdGF0aWNfYXNzZXJ0KHNp
emVvZihkZWNsdHlwZShzdGF0aWNfY2FzdDxNZW1vcnkqPihudWxscHRyKS0+c2l6ZSgpKSkgPT0g
c2l6ZW9mKHVpbnQ2NF90KSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOwotICAgIFZh
bHVlKiBzaXplID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9j
LCBMb2FkLCBJbnQ2NCwgb3JpZ2luKCksIGluc3RhbmNlVmFsdWUoKSwgc2FmZUNhc3Q8aW50MzJf
dD4oSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSk7CisgICAgVmFsdWUqIG1l
bW9yeSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9h
ZCwgSW50NjQsIG9yaWdpbigpLCBpbnN0YW5jZVZhbHVlKCksIHNhZmVDYXN0PGludDMyX3Q+KElu
c3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSk7CisgICAgVmFsdWUqIGhhbmRsZSA9IG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50NjQsIG9yaWdp
bigpLCBtZW1vcnksIHNhZmVDYXN0PGludDMyX3Q+KE1lbW9yeTo6b2Zmc2V0T2ZIYW5kbGUoKSkp
OworICAgIFZhbHVlKiBzaXplID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4obV9wcm9jLCBMb2FkLCBJbnQ2NCwgb3JpZ2luKCksIGhhbmRsZSwgc2FmZUNhc3Q8aW50MzJf
dD4oTWVtb3J5SGFuZGxlOjpvZmZzZXRPZlNpemUoKSkpOwogCiAgICAgY29uc3RleHByIHVpbnQz
Ml90IHNoaWZ0VmFsdWUgPSAxNjsKICAgICBzdGF0aWNfYXNzZXJ0KFBhZ2VDb3VudDo6cGFnZVNp
emUgPT0gMXVsbCA8PCBzaGlmdFZhbHVlLCAiVGhpcyBtdXN0IGhvbGQgZm9yIHRoZSBjb2RlIGJl
bG93IHRvIGJlIGNvcnJlY3QuIik7CkBAIC05NTQsOSArOTU2LDkgQEAgaW5saW5lIFZhbHVlKiBC
M0lSR2VuZXJhdG9yOjplbWl0Q2hlY2tBbmRQcmVwYXJlUG9pbnRlcihFeHByZXNzaW9uVHlwZSBw
b2ludGVyLAogICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgY2FzZSBNZW1vcnlNb2RlOjpCb3Vu
ZHNDaGVja2luZzogewogICAgICAgICAvLyBXZSdyZSBub3QgdXNpbmcgc2lnbmFsIGhhbmRsaW5n
IGF0IGFsbCwgd2UgbXVzdCB0aGVyZWZvcmUgY2hlY2sgdGhhdCBubyBtZW1vcnkgYWNjZXNzIGV4
Y2VlZHMgdGhlIGN1cnJlbnQgbWVtb3J5IHNpemUuCi0gICAgICAgIEFTU0VSVChtX21lbW9yeVNp
emVHUFIpOworICAgICAgICBBU1NFUlQobV9ib3VuZHNDaGVja2luZ1NpemVHUFIpOwogICAgICAg
ICBBU1NFUlQoc2l6ZU9mT3BlcmF0aW9uICsgb2Zmc2V0ID4gb2Zmc2V0KTsKLSAgICAgICAgbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxXYXNtQm91bmRzQ2hlY2tWYWx1ZT4obV9wcm9jLCBvcmln
aW4oKSwgbV9tZW1vcnlTaXplR1BSLCBwb2ludGVyLCBzaXplT2ZPcGVyYXRpb24gKyBvZmZzZXQg
LSAxKTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxXYXNtQm91bmRzQ2hlY2tW
YWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgbV9ib3VuZHNDaGVja2luZ1NpemVHUFIsIHBvaW50ZXIs
IHNpemVPZk9wZXJhdGlvbiArIG9mZnNldCAtIDEpOwogICAgICAgICBicmVhazsKICAgICB9CiAK
QEAgLTE3MTAsNyArMTcxMiw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJf
dCBmdW5jdGlvbkluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwKIAogICAgICAgICAg
ICAgICAgIC8vIFdlIG5lZWQgdG8gY2xvYmJlciB0aGUgc2l6ZSByZWdpc3RlciBzaW5jZSB0aGUg
TExJbnQgYWx3YXlzIGJvdW5kcyBjaGVja3MKICAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09
IE1lbW9yeU1vZGU6OlNpZ25hbGluZykKLSAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+
Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXQgeyBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnNpemVS
ZWdpc3RlciB9KTsKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUo
UmVnaXN0ZXJTZXQgeyBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLmJvdW5kc0NoZWNraW5nU2l6
ZVJlZ2lzdGVyIH0pOwogICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihb
dW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIGZ1bmN0aW9uSW5kZXhdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgICAg
ICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwog
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC50aHJlYWRT
YWZlUGF0Y2hhYmxlTmVhckNhbGwoKTsKQEAgLTE4MzEsMTYgKzE4MzMsMTYgQEAgYXV0byBCM0lS
R2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2ln
bmF0dXJlJiBzaWduYXQKICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhvbGRDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZFN0YWNrTGlt
aXQoKSksIGJhc2VNZW1vcnkpOwogICAgICAgICAgICAgaml0LnN0b3JlUHRyKGJhc2VNZW1vcnks
IENDYWxsSGVscGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZz
ZXRPZkNhY2hlZFN0YWNrTGltaXQoKSkpOwogICAgICAgICAgICAgaml0LnN0b3JlV2FzbUNvbnRl
eHRJbnN0YW5jZShuZXdDb250ZXh0SW5zdGFuY2UpOwotICAgICAgICAgICAgQVNTRVJUKHBpbm5l
ZFJlZ3Muc2l6ZVJlZ2lzdGVyICE9IGJhc2VNZW1vcnkpOworICAgICAgICAgICAgQVNTRVJUKHBp
bm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgIT0gYmFzZU1lbW9yeSk7CiAgICAg
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBtZW1vcnkg
c2l6ZSByZWdpc3RlcgogICAgICAgICAgICAgLy8gICBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKLSAgICAgICAgICAgIEFTU0VSVChwaW5uZWRSZWdz
LnNpemVSZWdpc3RlciAhPSBuZXdDb250ZXh0SW5zdGFuY2UpOwotICAgICAgICAgICAgR1BSUmVn
IHNjcmF0Y2hPclNpemUgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUp
ID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyOworICAgICAg
ICAgICAgQVNTRVJUKHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgIT0gbmV3
Q29udGV4dEluc3RhbmNlKTsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoT3JCb3VuZHNDaGVj
a2luZ1NpemUgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUpID8gcGFy
YW1zLmdwU2NyYXRjaCgwKSA6IHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXI7
CiAKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhuZXdDb250
ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBpbm5l
ZFJlZ3Muc2l6ZVJlZ2lzdGVyKTsgLy8gTWVtb3J5IHNpemUuCisgICAgICAgICAgICBqaXQubG9h
ZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobmV3Q29udGV4dEluc3RhbmNlLCBJbnN0YW5jZTo6
b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSksIHBpbm5lZFJlZ3MuYm91bmRzQ2hl
Y2tpbmdTaXplUmVnaXN0ZXIpOyAvLyBNZW1vcnkgc2l6ZS4KICAgICAgICAgICAgIGppdC5sb2Fk
UHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpv
ZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7IC8vIE1lbW9yeTo6dm9pZCouCiAK
LSAgICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBi
YXNlTWVtb3J5LCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlciwgc2NyYXRjaE9yU2l6ZSk7CisgICAg
ICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1l
bW9yeSwgcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlciwgc2NyYXRjaE9yQm91
bmRzQ2hlY2tpbmdTaXplKTsKICAgICAgICAgfSk7CiAgICAgICAgIGRvQ29udGV4dFN3aXRjaC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywgSnVtcCwgb3JpZ2luKCksIGNvbnRpbnVhdGlv
bik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5n
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAppbmRleCA5
NDFkMDE2MzdjY2M5MDI3YmIzMDk0ZjlmMmNjY2IyZTZjZDMxYTkyLi42NTc1OWE3Y2MwOTU0ZDZh
Yjc1OWViNGE4YThjMTUxOTRjYjljYWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQmluZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUJpbmRpbmcuY3BwCkBAIC00OSw5ICs0OSw5IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvV2FzbSh1bnNp
CiAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVyOwog
ICAgIEFTU0VSVChiYXNlTWVtb3J5ICE9IEdQUlJlZzo6SW52YWxpZEdQUlJlZyk7CiAgICAgQVNT
RVJUKGJhc2VNZW1vcnkgIT0gc2NyYXRjaCk7Ci0gICAgQVNTRVJUKHBpbm5lZFJlZ3Muc2l6ZVJl
Z2lzdGVyICE9IGJhc2VNZW1vcnkpOwotICAgIEFTU0VSVChwaW5uZWRSZWdzLnNpemVSZWdpc3Rl
ciAhPSBzY3JhdGNoKTsKLSAgICBHUFJSZWcgc2l6ZVJlZ0FzU2NyYXRjaCA9IHBpbm5lZFJlZ3Mu
c2l6ZVJlZ2lzdGVyOworICAgIEFTU0VSVChwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJl
Z2lzdGVyICE9IGJhc2VNZW1vcnkpOworICAgIEFTU0VSVChwaW5uZWRSZWdzLmJvdW5kc0NoZWNr
aW5nU2l6ZVJlZ2lzdGVyICE9IHNjcmF0Y2gpOworICAgIEdQUlJlZyBzaXplUmVnQXNTY3JhdGNo
ID0gcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlcjsKICAgICBBU1NFUlQoc2l6
ZVJlZ0FzU2NyYXRjaCAhPSBHUFJSZWc6OkludmFsaWRHUFJSZWcpOwogCiAgICAgLy8gQjMncyBj
YWxsIGNvZGVnZW4gZW5zdXJlcyB0aGF0IHRoZSBKU0NlbGwgaXMgYSBXZWJBc3NlbWJseUZ1bmN0
aW9uLgpAQCAtNjgsMTEgKzY4LDExIEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxX
YXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvV2FzbSh1bnNpCiAgICAgLy8g
RklYTUUgdGhlIGZvbGxvd2luZyBjb2RlIGFzc3VtZXMgdGhhdCBhbGwgV2FzbTo6SW5zdGFuY2Ug
aGF2ZSB0aGUgc2FtZSBwaW5uZWQgcmVnaXN0ZXJzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYyOTUyCiAgICAgLy8gU2V0IHVwIHRoZSBjYWxsZWUncyBiYXNlTWVt
b3J5IHJlZ2lzdGVyIGFzIHdlbGwgYXMgdGhlIG1lbW9yeSBzaXplIHJlZ2lzdGVycy4KICAgICB7
Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoT3JTaXplID0gIUdpZ2FjYWdlOjppc0VuYWJsZWQoR2ln
YWNhZ2U6OlByaW1pdGl2ZSkgPyBwaW5uZWRSZWdzLnNpemVSZWdpc3RlciA6IHdhc21DYWxsaW5n
Q29udmVudGlvbigpLnByb2xvZ3VlU2NyYXRjaEdQUnNbMV07CisgICAgICAgIEdQUlJlZyBzY3Jh
dGNoT3JCb3VuZHNDaGVja2luZ1NpemUgPSAhR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6
UHJpbWl0aXZlKSA/IHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgOiB3YXNt
Q2FsbGluZ0NvbnZlbnRpb24oKS5wcm9sb2d1ZVNjcmF0Y2hHUFJzWzFdOwogCi0gICAgICAgIGpp
dC5sb2FkUHRyKEpJVDo6QWRkcmVzcyhiYXNlTWVtb3J5LCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0
T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlcik7IC8vIE1lbW9y
eSBzaXplLgorICAgICAgICBqaXQubG9hZFB0cihKSVQ6OkFkZHJlc3MoYmFzZU1lbW9yeSwgV2Fz
bTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkpLCBwaW5uZWRS
ZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsgLy8gQm91bmQgY2hlY2tpbmcgc2l6ZS4K
ICAgICAgICAgaml0LmxvYWRQdHIoSklUOjpBZGRyZXNzKGJhc2VNZW1vcnksIFdhc206Okluc3Rh
bmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7IC8vIFdhc206Ok1lbW9y
eTo6VGFnZ2VkQXJyYXlTdG9yYWdlUHRyPHZvaWQ+ICh2b2lkKikuCi0gICAgICAgIGppdC5jYWdl
Q29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdz
LnNpemVSZWdpc3Rlciwgc2NyYXRjaE9yU2l6ZSk7CisgICAgICAgIGppdC5jYWdlQ29uZGl0aW9u
YWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLmJvdW5kc0No
ZWNraW5nU2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOwogICAgIH0K
IAogICAgIC8vIFRhaWwgY2FsbCBpbnRvIHRoZSBjYWxsZWUgV2ViQXNzZW1ibHkgZnVuY3Rpb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxI
YW5kbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhh
bmRsZXIuY3BwCmluZGV4IDNlYTAwODg5MDFiNmMyN2NmNjViMGI0NzRkZDhkYzk1Yzc4MTUxZmYu
LjA0YzM0YjdlOGFlNmQ3ZGU2YWE5YWY0MDkzNmE4YzNlMmE1NzRjNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCkBA
IC02MywyOSArNjMsNDAgQEAgc3RhdGljIFNpZ25hbEFjdGlvbiB0cmFwSGFuZGxlcihTaWduYWws
IFNpZ0luZm8mIHNpZ0luZm8sIFBsYXRmb3JtUmVnaXN0ZXJzJiBjb24KICAgICBkYXRhTG9nTG5J
ZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJzdGFydGluZyBoYW5k
bGVyIGZvciBmYXVsdCBhdDogIiwgUmF3UG9pbnRlcihmYXVsdGluZ0luc3RydWN0aW9uKSk7CiAK
ICAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2Us
ICJKSVQgbWVtb3J5IHN0YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0T2ZGaXhlZEV4ZWN1dGFibGVN
ZW1vcnlQb29sKCkpLCAiIGVuZDogIiwgUmF3UG9pbnRlcihlbmRPZkZpeGVkRXhlY3V0YWJsZU1l
bW9yeVBvb2woKSkpOwotICAgIC8vIEZpcnN0IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGFyZSBp
biBKSVQgY29kZSBiZWZvcmUgd2UgY2FuIGFxdWlyZSBhbnkgbG9ja3MuIE90aGVyd2lzZSwKKyAg
ICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJX
YXNtTExJbnQgbWVtb3J5IHN0YXJ0OiAiLCBSYXdQb2ludGVyKHVudGFnQ29kZVB0cjx2b2lkKiwg
Q0Z1bmN0aW9uUHRyVGFnPihMTEludDo6d2FzbUxMSW50UENSYW5nZVN0YXJ0KSksICIgZW5kOiAi
LCBSYXdQb2ludGVyKHVudGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnPihMTEludDo6
d2FzbUxMSW50UENSYW5nZUVuZCkpKTsKKyAgICAvLyBGaXJzdCB3ZSBuZWVkIHRvIG1ha2Ugc3Vy
ZSB3ZSBhcmUgaW4gSklUIGNvZGUgb3IgV2FzbSBMTEludCBjb2RlIGJlZm9yZSB3ZSBjYW4gYXF1
aXJlIGFueSBsb2Nrcy4gT3RoZXJ3aXNlLAogICAgIC8vIHdlIG1pZ2h0IGhhdmUgY3Jhc2hlZCBp
biBjb2RlIHRoYXQgaXMgYWxyZWFkeSBob2xkaW5nIG9uZSBvZiB0aGUgbG9ja3Mgd2Ugd2FudCB0
byBhcXVpcmUuCiAgICAgYXNzZXJ0SXNOb3RUYWdnZWQoZmF1bHRpbmdJbnN0cnVjdGlvbik7Ci0g
ICAgaWYgKGlzSklUUEMoZmF1bHRpbmdJbnN0cnVjdGlvbikpIHsKLSAgICAgICAgYm9vbCBmYXVs
dGVkSW5BY3RpdmVGYXN0TWVtb3J5ID0gZmFsc2U7CisgICAgaWYgKGlzSklUUEMoZmF1bHRpbmdJ
bnN0cnVjdGlvbikgfHwgTExJbnQ6OmlzV2FzbUxMSW50UEMoZmF1bHRpbmdJbnN0cnVjdGlvbikp
IHsKKyAgICAgICAgYm9vbCBmYXVsdGVkSW5BY3RpdmVHcm93YWJsZU1lbW9yeSA9IGZhbHNlOwog
ICAgICAgICB7CiAgICAgICAgICAgICB2b2lkKiBmYXVsdGluZ0FkZHJlc3MgPSBzaWdJbmZvLmZh
dWx0aW5nQWRkcmVzczsKICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhh
bmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImNoZWNraW5nIGZhdWx0aW5nIGFkZHJlc3M6ICIsIFJh
d1BvaW50ZXIoZmF1bHRpbmdBZGRyZXNzKSwgIiBpcyBpbiBhbiBhY3RpdmUgZmFzdCBtZW1vcnki
KTsKLSAgICAgICAgICAgIGZhdWx0ZWRJbkFjdGl2ZUZhc3RNZW1vcnkgPSBXYXNtOjpNZW1vcnk6
OmFkZHJlc3NJc0luQWN0aXZlRmFzdE1lbW9yeShmYXVsdGluZ0FkZHJlc3MpOworICAgICAgICAg
ICAgZmF1bHRlZEluQWN0aXZlR3Jvd2FibGVNZW1vcnkgPSBXYXNtOjpNZW1vcnk6OmFkZHJlc3NJ
c0luQWN0aXZlR3Jvd2FibGVNZW1vcnkoZmF1bHRpbmdBZGRyZXNzKTsKICAgICAgICAgfQotICAg
ICAgICBpZiAoZmF1bHRlZEluQWN0aXZlRmFzdE1lbW9yeSkgeworICAgICAgICBpZiAoZmF1bHRl
ZEluQWN0aXZlR3Jvd2FibGVNZW1vcnkpIHsKICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21G
YXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZvdW5kIGFjdGl2ZSBmYXN0IG1l
bW9yeSBmb3IgZmF1bHRpbmcgYWRkcmVzcyIpOwotICAgICAgICAgICAgYXV0byYgY2FsbGVlUmVn
aXN0cnkgPSBDYWxsZWVSZWdpc3RyeTo6c2luZ2xldG9uKCk7Ci0gICAgICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKGNhbGxlZVJlZ2lzdHJ5LmdldExvY2soKSk7Ci0gICAgICAgICAgICBm
b3IgKGF1dG8qIGNhbGxlZSA6IGNhbGxlZVJlZ2lzdHJ5LmFsbENhbGxlZXMobG9ja2VyKSkgewot
ICAgICAgICAgICAgICAgIGF1dG8gW3N0YXJ0LCBlbmRdID0gY2FsbGVlLT5yYW5nZSgpOwotICAg
ICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6
dmVyYm9zZSwgImZ1bmN0aW9uIHN0YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0KSwgIiBlbmQ6ICIs
IFJhd1BvaW50ZXIoZW5kKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXJ0IDw9IGZhdWx0aW5n
SW5zdHJ1Y3Rpb24gJiYgZmF1bHRpbmdJbnN0cnVjdGlvbiA8IGVuZCkgewotICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJv
c2UsICJmb3VuZCBtYXRjaCIpOwotICAgICAgICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6
YXJndW1lbnRQb2ludGVyPDE+KGNvbnRleHQpID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3Rh
dGljX2Nhc3Q8dWludHB0cl90PihXYXNtOjpDb250ZXh0Ojp1c2VGYXN0VExTKCkpKTsKLSAgICAg
ICAgICAgICAgICAgICAgTWFjaGluZUNvbnRleHQ6OnNldEluc3RydWN0aW9uUG9pbnRlcihjb250
ZXh0LCBMTEludDo6Z2V0Q29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+KHdhc21fdGhyb3dfZnJvbV9m
YXVsdF9oYW5kbGVyX3RyYW1wb2xpbmUpKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNp
Z25hbEFjdGlvbjo6SGFuZGxlZDsKKworICAgICAgICAgICAgYXV0byBkb2VzRmF1bHRJbldhc20g
PSBbXSh2b2lkKiBmYXVsdGluZ0luc3RydWN0aW9uKSB7CisgICAgICAgICAgICAgICAgaWYgKExM
SW50Ojppc1dhc21MTEludFBDKGZhdWx0aW5nSW5zdHJ1Y3Rpb24pKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBhdXRvJiBjYWxsZWVSZWdpc3RyeSA9
IENhbGxlZVJlZ2lzdHJ5OjpzaW5nbGV0b24oKTsKKyAgICAgICAgICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKGNhbGxlZVJlZ2lzdHJ5LmdldExvY2soKSk7CisgICAgICAgICAgICAgICAg
Zm9yIChhdXRvKiBjYWxsZWUgOiBjYWxsZWVSZWdpc3RyeS5hbGxDYWxsZWVzKGxvY2tlcikpIHsK
KyAgICAgICAgICAgICAgICAgICAgYXV0byBbc3RhcnQsIGVuZF0gPSBjYWxsZWUtPnJhbmdlKCk7
CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJ
bnRlcm5hbDo6dmVyYm9zZSwgImZ1bmN0aW9uIHN0YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0KSwg
IiBlbmQ6ICIsIFJhd1BvaW50ZXIoZW5kKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdGFy
dCA8PSBmYXVsdGluZ0luc3RydWN0aW9uICYmIGZhdWx0aW5nSW5zdHJ1Y3Rpb24gPCBlbmQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRs
ZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZvdW5kIG1hdGNoIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9OworCisgICAg
ICAgICAgICBpZiAoZG9lc0ZhdWx0SW5XYXNtKGZhdWx0aW5nSW5zdHJ1Y3Rpb24pKSB7CisgICAg
ICAgICAgICAgICAgTWFjaGluZUNvbnRleHQ6OmFyZ3VtZW50UG9pbnRlcjwxPihjb250ZXh0KSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oV2FzbTo6Q29u
dGV4dDo6dXNlRmFzdFRMUygpKSk7CisgICAgICAgICAgICAgICAgTWFjaGluZUNvbnRleHQ6OnNl
dEluc3RydWN0aW9uUG9pbnRlcihjb250ZXh0LCBMTEludDo6Z2V0Q29kZVB0cjxDRnVuY3Rpb25Q
dHJUYWc+KHdhc21fdGhyb3dfZnJvbV9mYXVsdF9oYW5kbGVyX3RyYW1wb2xpbmUpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gU2lnbmFsQWN0aW9uOjpIYW5kbGVkOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQpAQCAtMTA3LDcgKzExOCw3IEBAIHZvaWQgZW5hYmxlRmFzdE1lbW9y
eSgpCiAgICAgICAgIGlmICghV2FzbTo6aXNTdXBwb3J0ZWQoKSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpKQor
ICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpICYmICFPcHRp
b25zOjp1c2VTaGFyZWRBcnJheUJ1ZmZlcigpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIGFjdGl2YXRlU2lnbmFsSGFuZGxlcnNGb3IoU2lnbmFsOjpBY2Nlc3NGYXVsdCk7CkBAIC0x
MjUsNyArMTM2LDcgQEAgdm9pZCBwcmVwYXJlRmFzdE1lbW9yeSgpCiAgICAgICAgIGlmICghV2Fz
bTo6aXNTdXBwb3J0ZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIU9w
dGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpKQorICAgICAgICBpZiAoIU9wdGlvbnM6
OnVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpICYmICFPcHRpb25zOjp1c2VTaGFyZWRBcnJheUJ1
ZmZlcigpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGFkZFNpZ25hbEhhbmRsZXIo
U2lnbmFsOjpBY2Nlc3NGYXVsdCwgW10gKFNpZ25hbCBzaWduYWwsIFNpZ0luZm8mIHNpZ0luZm8s
IFBsYXRmb3JtUmVnaXN0ZXJzJiB1Y29udGV4dCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtSW5zdGFuY2UuaAppbmRleCA2MGU1NjE5MDJkNGMxOGY4MWVlMmYzN2NjNWJlN2Q2NTQ2
NjdkZWVmLi45YTk4NTJjMjQyMjA4MjdiN2VhMGVlNzRkZWZhNDM0NWM4ODEwZWViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaApAQCAtNzcsOCArNzcsOCBAQCBj
bGFzcyBJbnN0YW5jZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbnN0YW5jZT4sIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxJbgogICAgIFRhYmxlKiB0YWJsZSh1bnNpZ25lZCk7CiAgICAg
dm9pZCBzZXRUYWJsZSh1bnNpZ25lZCwgUmVmPFRhYmxlPiYmKTsKIAotICAgIHZvaWQqIGNhY2hl
ZE1lbW9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkTWVtb3J5LmdldE1heUJlTnVsbChjYWNo
ZWRNZW1vcnlTaXplKCkpOyB9Ci0gICAgc2l6ZV90IGNhY2hlZE1lbW9yeVNpemUoKSBjb25zdCB7
IHJldHVybiBtX2NhY2hlZE1lbW9yeVNpemU7IH0KKyAgICB2b2lkKiBjYWNoZWRNZW1vcnkoKSBj
b25zdCB7IHJldHVybiBtX2NhY2hlZE1lbW9yeS5nZXRNYXlCZU51bGwoY2FjaGVkQm91bmRzQ2hl
Y2tpbmdTaXplKCkpOyB9CisgICAgc2l6ZV90IGNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplOyB9CiAKICAgICB2b2lkIHNl
dE1lbW9yeShSZWY8TWVtb3J5PiYmIG1lbW9yeSkKICAgICB7CkBAIC04OSw4ICs4OSw4IEBAIGNs
YXNzIEluc3RhbmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPiwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPEluCiAgICAgdm9pZCB1cGRhdGVDYWNoZWRNZW1vcnkoKQogICAg
IHsKICAgICAgICAgaWYgKG1fbWVtb3J5ICE9IG51bGxwdHIpIHsKLSAgICAgICAgICAgIG1fY2Fj
aGVkTWVtb3J5ID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQ
dHI+KG1lbW9yeSgpLT5tZW1vcnkoKSwgbWVtb3J5KCktPnNpemUoKSk7Ci0gICAgICAgICAgICBt
X2NhY2hlZE1lbW9yeVNpemUgPSBtZW1vcnkoKS0+c2l6ZSgpOworICAgICAgICAgICAgbV9jYWNo
ZWRNZW1vcnkgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0
cj4obWVtb3J5KCktPm1lbW9yeSgpLCBtZW1vcnkoKS0+Ym91bmRzQ2hlY2tpbmdTaXplKCkpOwor
ICAgICAgICAgICAgbV9jYWNoZWRCb3VuZHNDaGVja2luZ1NpemUgPSBtZW1vcnkoKS0+Ym91bmRz
Q2hlY2tpbmdTaXplKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCBj
bGFzcyBJbnN0YW5jZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbnN0YW5jZT4sIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxJbgogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNZW1v
cnkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fbWVtb3J5KTsgfQogICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZHbG9iYWxzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKEluc3RhbmNlLCBtX2dsb2JhbHMpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
ZkNhY2hlZE1lbW9yeSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5jZSwgbV9jYWNo
ZWRNZW1vcnkpOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNhY2hlZE1lbW9yeVNp
emUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fY2FjaGVkTWVtb3J5U2l6
ZSk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdT
aXplKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX2NhY2hlZEJvdW5kc0No
ZWNraW5nU2l6ZSk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUG9pbnRlclRvVG9w
RW50cnlGcmFtZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5jZSwgbV9wb2ludGVy
VG9Ub3BFbnRyeUZyYW1lKTsgfQogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlBvaW50
ZXJUb0FjdHVhbFN0YWNrTGltaXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2Us
IG1fcG9pbnRlclRvQWN0dWFsU3RhY2tMaW1pdCk7IH0KQEAgLTIwMSw3ICsyMDEsNyBAQCBjbGFz
cyBJbnN0YW5jZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbnN0YW5jZT4sIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxJbgogICAgIHZvaWQqIG1fb3duZXIgeyBudWxscHRyIH07IC8vIElu
IGEgSlMgZW1iZWRkaW5nLCB0aGlzIGlzIGEgSlNXZWJBc3NlbWJseUluc3RhbmNlKi4KICAgICBD
b250ZXh0KiBtX2NvbnRleHQgeyBudWxscHRyIH07CiAgICAgQ2FnZWRQdHI8R2lnYWNhZ2U6OlBy
aW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+IG1fY2FjaGVkTWVtb3J5OwotICAgIHNpemVfdCBt
X2NhY2hlZE1lbW9yeVNpemUgeyAwIH07CisgICAgc2l6ZV90IG1fY2FjaGVkQm91bmRzQ2hlY2tp
bmdTaXplIHsgMCB9OwogICAgIFJlZjxNb2R1bGU+IG1fbW9kdWxlOwogICAgIFJlZlB0cjxDb2Rl
QmxvY2s+IG1fY29kZUJsb2NrOwogICAgIFJlZlB0cjxNZW1vcnk+IG1fbWVtb3J5OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcAppbmRleCBhMjZlODFkNzEyNGYzMGFl
MTNkODJiNzRjYjFkNDMwNmEzNGUyNWIyLi4zMDA0MjQ2ZTU5YWY3YmY2NTY3MThjMTAzNDE4YTVi
YmU1OTIzNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVt
b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcApA
QCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0
Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+CisjaW5jbHVkZSA8d3Rm
L1N0ZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2luY2x1ZGUgPGNzdHJpbmc+
CkBAIC0xMzMsMTYgKzEzNCw1NSBAQCBjbGFzcyBNZW1vcnlNYW5hZ2VyIHsKICAgICAgICAgCiAg
ICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmxvZ1dlYkFzc2VtYmx5TWVtb3J5KCksICJGcmVl
ZCB2aXJ0dWFsOyBzdGF0ZTogIiwgKnRoaXMpOwogICAgIH0KLSAgICAKLSAgICBib29sIGlzQWRk
cmVzc0luRmFzdE1lbW9yeSh2b2lkKiBhZGRyZXNzKQorCisgICAgTWVtb3J5UmVzdWx0IHRyeUFs
bG9jYXRlR3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9yeShzaXplX3QgbWFwcGVkQ2FwYWNpdHkp
CisgICAgeworICAgICAgICBNZW1vcnlSZXN1bHQgcmVzdWx0ID0gWyZdIHsKKyAgICAgICAgICAg
IGF1dG8gaG9sZGVyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgICAgIHZvaWQqIHJlc3Vs
dCA9IEdpZ2FjYWdlOjp0cnlBbGxvY2F0ZVplcm9lZFZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6UHJp
bWl0aXZlLCBtYXBwZWRDYXBhY2l0eSk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gTWVtb3J5UmVzdWx0KG51bGxwdHIsIE1lbW9yeVJlc3VsdDo6U3lu
Y1RyeVRvUmVjbGFpbU1lbW9yeSk7CisKKyAgICAgICAgICAgIG1fZ3Jvd2FibGVCb3VuZHNDaGVj
a2luZ01lbW9yaWVzLmluc2VydChzdGQ6Om1ha2VfcGFpcihiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PihyZXN1bHQpLCBtYXBwZWRDYXBhY2l0eSkpOworCisgICAgICAgICAgICByZXR1cm4gTWVtb3J5
UmVzdWx0KHJlc3VsdCwgTWVtb3J5UmVzdWx0OjpTdWNjZXNzKTsKKyAgICAgICAgfSgpOworCisg
ICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmxvZ1dlYkFzc2VtYmx5TWVtb3J5KCksICJBbGxv
Y2F0ZWQgdmlydHVhbDogIiwgcmVzdWx0LCAiOyBzdGF0ZTogIiwgKnRoaXMpOworCisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdm9pZCBmcmVlR3Jvd2FibGVCb3VuZHNDaGVj
a2luZ01lbW9yeSh2b2lkKiBiYXNlUHRyLCBzaXplX3QgbWFwcGVkQ2FwYWNpdHkpCisgICAgewor
ICAgICAgICB7CisgICAgICAgICAgICBhdXRvIGhvbGRlciA9IGhvbGRMb2NrKG1fbG9jayk7Cisg
ICAgICAgICAgICBHaWdhY2FnZTo6ZnJlZVZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6UHJpbWl0aXZl
LCBiYXNlUHRyLCBtYXBwZWRDYXBhY2l0eSk7CisgICAgICAgICAgICBtX2dyb3dhYmxlQm91bmRz
Q2hlY2tpbmdNZW1vcmllcy5lcmFzZShzdGQ6Om1ha2VfcGFpcihiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihiYXNlUHRyKSwgbWFwcGVkQ2FwYWNpdHkpKTsKKyAgICAgICAgfQorCisgICAgICAgIGRh
dGFMb2dMbklmKE9wdGlvbnM6OmxvZ1dlYkFzc2VtYmx5TWVtb3J5KCksICJGcmVlZCB2aXJ0dWFs
OyBzdGF0ZTogIiwgKnRoaXMpOworICAgIH0KKworICAgIGJvb2wgaXNBZGRyZXNzSW5Hcm93YWJs
ZU1lbW9yeSh2b2lkKiBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgLy8gTk9URTogVGhpcyBjYW4g
YmUgY2FsbGVkIGZyb20gYSBzaWduYWwgaGFuZGxlciwgYnV0IG9ubHkgYWZ0ZXIgd2UgcHJvdmVk
IHRoYXQgd2UncmUgaW4gSklUIGNvZGUuCisgICAgICAgIC8vIE5PVEU6IFRoaXMgY2FuIGJlIGNh
bGxlZCBmcm9tIGEgc2lnbmFsIGhhbmRsZXIsIGJ1dCBvbmx5IGFmdGVyIHdlIHByb3ZlZCB0aGF0
IHdlJ3JlIGluIEpJVCBjb2RlIG9yIFdhc21MTEludCBjb2RlLgogICAgICAgICBhdXRvIGhvbGRl
ciA9IGhvbGRMb2NrKG1fbG9jayk7CiAgICAgICAgIGZvciAodm9pZCogbWVtb3J5IDogbV9mYXN0
TWVtb3JpZXMpIHsKICAgICAgICAgICAgIGNoYXIqIHN0YXJ0ID0gc3RhdGljX2Nhc3Q8Y2hhcio+
KG1lbW9yeSk7CiAgICAgICAgICAgICBpZiAoc3RhcnQgPD0gYWRkcmVzcyAmJiBhZGRyZXNzIDw9
IHN0YXJ0ICsgTWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQorICAgICAgICB1aW50cHRyX3QgYWRkcmVzc1ZhbHVlID0gYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4oYWRkcmVzcyk7CisgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBz
dGQ6OnVwcGVyX2JvdW5kKG1fZ3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9yaWVzLmJlZ2luKCks
IG1fZ3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9yaWVzLmVuZCgpLCBzdGQ6Om1ha2VfcGFpcihh
ZGRyZXNzVmFsdWUsIDApLAorICAgICAgICAgICAgW10oc3RkOjpwYWlyPHVpbnRwdHJfdCwgc2l6
ZV90PiBhLCBzdGQ6OnBhaXI8dWludHB0cl90LCBzaXplX3Q+IGIpIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gKGEuZmlyc3QgKyBhLnNlY29uZCkgPCAoYi5maXJzdCArIGIuc2Vjb25kKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbV9ncm93YWJsZUJvdW5kc0No
ZWNraW5nTWVtb3JpZXMuZW5kKCkpIHsKKyAgICAgICAgICAgIC8vIFNpbmNlIHdlIG5ldmVyIGhh
dmUgb3ZlcmxhcHBlZCByYW5nZSBpbiBtX2dyb3dhYmxlQm91bmRzQ2hlY2tpbmdNZW1vcmllcywg
anVzdCBjaGVja2luZyBvbmUgbG93ZXItYm91bmQgcmFuZ2UgaXMgZW5vdWdoLgorICAgICAgICAg
ICAgaWYgKGl0ZXJhdG9yLT5maXJzdCA8PSBhZGRyZXNzVmFsdWUgJiYgYWRkcmVzc1ZhbHVlIDwg
KGl0ZXJhdG9yLT5maXJzdCArIGl0ZXJhdG9yLT5zZWNvbmQpKQorICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTE5Miw2ICsyMzIsNyBAQCBjbGFzcyBNZW1vcnlNYW5hZ2VyIHsKICAgICBMb2NrIG1fbG9jazsK
ICAgICB1bnNpZ25lZCBtX21heEZhc3RNZW1vcnlDb3VudCB7IDAgfTsKICAgICBWZWN0b3I8dm9p
ZCo+IG1fZmFzdE1lbW9yaWVzOworICAgIFN0ZFNldDxzdGQ6OnBhaXI8dWludHB0cl90LCBzaXpl
X3Q+PiBtX2dyb3dhYmxlQm91bmRzQ2hlY2tpbmdNZW1vcmllczsKICAgICBzaXplX3QgbV9waHlz
aWNhbEJ5dGVzIHsgMCB9OwogfTsKIApAQCAtMjM1LDMwICsyNzYsNjkgQEAgYm9vbCB0cnlBbGxv
Y2F0ZShjb25zdCBGdW5jJiBhbGxvY2F0ZSwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKE1lbW9y
eTo6Tm90aWZ5UHIKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKKworTWVtb3J5SGFuZGxl
OjpNZW1vcnlIYW5kbGUodm9pZCogbWVtb3J5LCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG1hcHBlZENh
cGFjaXR5LCBQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIE1lbW9yeVNoYXJp
bmdNb2RlIHNoYXJpbmdNb2RlLCBNZW1vcnlNb2RlIG1vZGUpCisgICAgOiBtX21lbW9yeShtZW1v
cnksIG1hcHBlZENhcGFjaXR5KQorICAgICwgbV9zaXplKHNpemUpCisgICAgLCBtX21hcHBlZENh
cGFjaXR5KG1hcHBlZENhcGFjaXR5KQorICAgICwgbV9pbml0aWFsKGluaXRpYWwpCisgICAgLCBt
X21heGltdW0obWF4aW11bSkKKyAgICAsIG1fc2hhcmluZ01vZGUoc2hhcmluZ01vZGUpCisgICAg
LCBtX21vZGUobW9kZSkKK3sKK30KKworTWVtb3J5SGFuZGxlOjp+TWVtb3J5SGFuZGxlKCkKK3sK
KyAgICBpZiAobV9tZW1vcnkpIHsKKyAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVQaHlzaWNh
bEJ5dGVzKG1fc2l6ZSk7CisgICAgICAgIHN3aXRjaCAobV9tb2RlKSB7CisgICAgICAgIGNhc2Ug
TWVtb3J5TW9kZTo6U2lnbmFsaW5nOgorICAgICAgICAgICAgaWYgKG1wcm90ZWN0KG1lbW9yeSgp
LCBNZW1vcnk6OmZhc3RNYXBwZWRCeXRlcygpLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKSkgewor
ICAgICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJy
bm8pLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVGYXN0TWVt
b3J5KG1lbW9yeSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1lbW9yeU1v
ZGU6OkJvdW5kc0NoZWNraW5nOiB7CisgICAgICAgICAgICBzd2l0Y2ggKG1fc2hhcmluZ01vZGUp
IHsKKyAgICAgICAgICAgIGNhc2UgTWVtb3J5U2hhcmluZ01vZGU6OkRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgR2lnYWNhZ2U6OmZyZWVWaXJ0dWFsUGFnZXMoR2lnYWNhZ2U6OlByaW1pdGl2ZSwg
bWVtb3J5KCksIG1fc2l6ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIE1lbW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQ6IHsKKyAgICAgICAgICAgICAgICBpZiAobXBy
b3RlY3QobWVtb3J5KCksIG1fbWFwcGVkQ2FwYWNpdHksIFBST1RfUkVBRCB8IFBST1RfV1JJVEUp
KSB7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3Ry
ZXJyb3IoZXJybm8pLCAiXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbWVtb3J5
TWFuYWdlcigpLmZyZWVHcm93YWJsZUJvdW5kc0NoZWNraW5nTWVtb3J5KG1lbW9yeSgpLCBtX21h
cHBlZENhcGFjaXR5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9Cit9CisKIE1lbW9yeTo6TWVtb3J5KCkKKyAgICA6IG1faGFuZGxlKGFkb3B0UmVmKCpuZXcg
TWVtb3J5SGFuZGxlKG51bGxwdHIsIDAsIDAsIFBhZ2VDb3VudCgwKSwgUGFnZUNvdW50KDApLCBN
ZW1vcnlTaGFyaW5nTW9kZTo6RGVmYXVsdCwgTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKSkK
IHsKIH0KIAotTWVtb3J5OjpNZW1vcnkoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhp
bXVtLCBGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3Vy
ZSwgRnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVt
b3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50
KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKQotICAgIDogbV9pbml0aWFsKGluaXRpYWwpCi0gICAg
LCBtX21heGltdW0obWF4aW11bSkKK01lbW9yeTo6TWVtb3J5KFBhZ2VDb3VudCBpbml0aWFsLCBQ
YWdlQ291bnQgbWF4aW11bSwgTWVtb3J5U2hhcmluZ01vZGUgc2hhcmluZ01vZGUsIEZ1bmN0aW9u
PHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBGdW5jdGlvbjx2
b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdURjo6RnVu
Y3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNj
ZXNzQ2FsbGJhY2spCisgICAgOiBtX2hhbmRsZShhZG9wdFJlZigqbmV3IE1lbW9yeUhhbmRsZShu
dWxscHRyLCAwLCAwLCBpbml0aWFsLCBtYXhpbXVtLCBzaGFyaW5nTW9kZSwgTWVtb3J5TW9kZTo6
Qm91bmRzQ2hlY2tpbmcpKSkKICAgICAsIG1fbm90aWZ5TWVtb3J5UHJlc3N1cmUoV1RGTW92ZShu
b3RpZnlNZW1vcnlQcmVzc3VyZSkpCiAgICAgLCBtX3N5bmNUcnlUb1JlY2xhaW1NZW1vcnkoV1RG
TW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSkKICAgICAsIG1fZ3Jvd1N1Y2Nlc3NDYWxsYmFj
ayhXVEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJhY2spKQogewogICAgIEFTU0VSVCghaW5pdGlhbC5i
eXRlcygpKTsKLSAgICBBU1NFUlQobV9tb2RlID09IE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5n
KTsKKyAgICBBU1NFUlQobW9kZSgpID09IE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKTsKICAg
ICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiTWVtb3J5OjpNZW1vcnkgYWxsb2NhdGluZyAiLCAqdGhp
cyk7CiAgICAgQVNTRVJUKCFtZW1vcnkoKSk7CiB9CiAKLU1lbW9yeTo6TWVtb3J5KHZvaWQqIG1l
bW9yeSwgUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBzaXplX3QgbWFwcGVk
Q2FwYWNpdHksIE1lbW9yeU1vZGUgbW9kZSwgRnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+
JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIEZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+
JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNz
LCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykKLSAgICA6IG1f
bWVtb3J5KG1lbW9yeSwgaW5pdGlhbC5ieXRlcygpKQotICAgICwgbV9zaXplKGluaXRpYWwuYnl0
ZXMoKSkKLSAgICAsIG1faW5pdGlhbChpbml0aWFsKQotICAgICwgbV9tYXhpbXVtKG1heGltdW0p
Ci0gICAgLCBtX21hcHBlZENhcGFjaXR5KG1hcHBlZENhcGFjaXR5KQotICAgICwgbV9tb2RlKG1v
ZGUpCitNZW1vcnk6Ok1lbW9yeShSZWY8TWVtb3J5SGFuZGxlPiYmIGhhbmRsZSwgRnVuY3Rpb248
dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIEZ1bmN0aW9uPHZv
aWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5j
dGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nl
c3NDYWxsYmFjaykKKyAgICA6IG1faGFuZGxlKFdURk1vdmUoaGFuZGxlKSkKICAgICAsIG1fbm90
aWZ5TWVtb3J5UHJlc3N1cmUoV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSkpCiAgICAgLCBt
X3N5bmNUcnlUb1JlY2xhaW1NZW1vcnkoV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSkK
ICAgICAsIG1fZ3Jvd1N1Y2Nlc3NDYWxsYmFjayhXVEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJhY2sp
KQpAQCAtMjcxLDcgKzM1MSwxMiBAQCBSZWY8TWVtb3J5PiBNZW1vcnk6OmNyZWF0ZSgpCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVtb3J5KCkpOwogfQogCi1SZWZQdHI8TWVtb3J5PiBNZW1v
cnk6OnRyeUNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIFdURjo6
RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdU
Rjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVt
b3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50
KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKQorUmVmPE1lbW9yeT4gTWVtb3J5OjpjcmVhdGUoUmVm
PE1lbW9yeUhhbmRsZT4mJiBoYW5kbGUsIFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3Vy
ZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9S
ZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jv
d1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lbW9yeShXVEZNb3ZlKGhhbmRsZSksIFdURk1v
dmUobm90aWZ5TWVtb3J5UHJlc3N1cmUpLCBXVEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkp
LCBXVEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJhY2spKSk7Cit9CisKK1JlZlB0cjxNZW1vcnk+IE1l
bW9yeTo6dHJ5Q3JlYXRlKFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgTWVt
b3J5U2hhcmluZ01vZGUgc2hhcmluZ01vZGUsIFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVz
c3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5
VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQo
R3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNr
KQogewogICAgIEFTU0VSVChpbml0aWFsKTsKICAgICBSRUxFQVNFX0FTU0VSVCghbWF4aW11bSB8
fCBtYXhpbXVtID49IGluaXRpYWwpOyAvLyBUaGlzIHNob3VsZCBiZSBndWFyYW50ZWVkIGJ5IG91
ciBjYWxsZXIuCkBAIC0yODUsNyArMzcwLDcgQEAgUmVmUHRyPE1lbW9yeT4gTWVtb3J5Ojp0cnlD
cmVhdGUoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBXVEY6OkZ1bmMKICAg
ICBpZiAobWF4aW11bSAmJiAhbWF4aW11bUJ5dGVzKSB7CiAgICAgICAgIC8vIFVzZXIgc3BlY2lm
aWVkIGEgemVybyBtYXhpbXVtLCBpbml0aWFsIHNpemUgbXVzdCBhbHNvIGJlIHplcm8uCiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFpbml0aWFsQnl0ZXMpOwotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IE1lbW9yeShpbml0aWFsLCBtYXhpbXVtLCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNz
dXJlKSwgV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92ZShncm93U3VjY2Vz
c0NhbGxiYWNrKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lbW9yeShpbml0aWFs
LCBtYXhpbXVtLCBzaGFyaW5nTW9kZSwgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdU
Rk1vdmUoc3luY1RyeVRvUmVjbGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFj
aykpKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBkb25lID0gdHJ5QWxsb2NhdGUoCkBAIC0zMDYs
NDggKzM5MSw1NiBAQCBSZWZQdHI8TWVtb3J5PiBNZW1vcnk6OnRyeUNyZWF0ZShQYWdlQ291bnQg
aW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIFdURjo6RnVuYwogICAgIH0KICAgICAKICAgICBp
ZiAoZmFzdE1lbW9yeSkgewotICAgICAgICAKICAgICAgICAgaWYgKG1wcm90ZWN0KGZhc3RNZW1v
cnkgKyBpbml0aWFsQnl0ZXMsIE1lbW9yeTo6ZmFzdE1hcHBlZEJ5dGVzKCkgLSBpbml0aWFsQnl0
ZXMsIFBST1RfTk9ORSkpIHsKICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDog
Iiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1l
bW9yeShmYXN0TWVtb3J5LCBpbml0aWFsLCBtYXhpbXVtLCBNZW1vcnk6OmZhc3RNYXBwZWRCeXRl
cygpLCBNZW1vcnlNb2RlOjpTaWduYWxpbmcsIFdURk1vdmUobm90aWZ5TWVtb3J5UHJlc3N1cmUp
LCBXVEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpLCBXVEZNb3ZlKGdyb3dTdWNjZXNzQ2Fs
bGJhY2spKSk7CisgICAgICAgIHJldHVybiBNZW1vcnk6OmNyZWF0ZShhZG9wdFJlZigqbmV3IE1l
bW9yeUhhbmRsZShmYXN0TWVtb3J5LCBpbml0aWFsQnl0ZXMsIE1lbW9yeTo6ZmFzdE1hcHBlZEJ5
dGVzKCksIGluaXRpYWwsIG1heGltdW0sIHNoYXJpbmdNb2RlLCBNZW1vcnlNb2RlOjpTaWduYWxp
bmcpKSwgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1vdmUoc3luY1RyeVRvUmVj
bGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykpOwogICAgIH0KICAgICAK
ICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6Y3Jhc2hJZldlYkFzc2VtYmx5Q2FudEZhc3RNZW1v
cnkoKSkpCiAgICAgICAgIHdlYkFzc2VtYmx5Q291bGRudEdldEZhc3RNZW1vcnkoKTsKIAogICAg
IGlmICghaW5pdGlhbEJ5dGVzKQotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lbW9yeShp
bml0aWFsLCBtYXhpbXVtLCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJlKSwgV1RGTW92ZShz
eW5jVHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92ZShncm93U3VjY2Vzc0NhbGxiYWNrKSkpOwot
ICAgIAotICAgIHZvaWQqIHNsb3dNZW1vcnkgPSBHaWdhY2FnZTo6dHJ5QWxsb2NhdGVaZXJvZWRW
aXJ0dWFsUGFnZXMoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgaW5pdGlhbEJ5dGVzKTsKLSAgICBpZiAo
IXNsb3dNZW1vcnkpIHsKLSAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVQaHlzaWNhbEJ5dGVz
KGluaXRpYWxCeXRlcyk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE1lbW9yeShpbml0aWFsLCBtYXhpbXVtLCBzaGFyaW5nTW9kZSwgV1RGTW92
ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1vdmUoc3luY1RyeVRvUmVjbGFpbU1lbW9yeSks
IFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykpKTsKKworICAgIHN3aXRjaCAoc2hhcmluZ01v
ZGUpIHsKKyAgICBjYXNlIE1lbW9yeVNoYXJpbmdNb2RlOjpEZWZhdWx0OiB7CisgICAgICAgIHZv
aWQqIHNsb3dNZW1vcnkgPSBHaWdhY2FnZTo6dHJ5QWxsb2NhdGVaZXJvZWRWaXJ0dWFsUGFnZXMo
R2lnYWNhZ2U6OlByaW1pdGl2ZSwgaW5pdGlhbEJ5dGVzKTsKKyAgICAgICAgaWYgKCFzbG93TWVt
b3J5KSB7CisgICAgICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZVBoeXNpY2FsQnl0ZXMoaW5p
dGlhbEJ5dGVzKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBNZW1vcnk6OmNyZWF0ZShhZG9wdFJlZigqbmV3IE1lbW9yeUhhbmRsZShzbG93
TWVtb3J5LCBpbml0aWFsQnl0ZXMsIGluaXRpYWxCeXRlcywgaW5pdGlhbCwgbWF4aW11bSwgc2hh
cmluZ01vZGUsIE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSksIFdURk1vdmUobm90aWZ5TWVt
b3J5UHJlc3N1cmUpLCBXVEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpLCBXVEZNb3ZlKGdy
b3dTdWNjZXNzQ2FsbGJhY2spKTsKICAgICB9Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZW1v
cnkoc2xvd01lbW9yeSwgaW5pdGlhbCwgbWF4aW11bSwgaW5pdGlhbEJ5dGVzLCBNZW1vcnlNb2Rl
OjpCb3VuZHNDaGVja2luZywgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1vdmUo
c3luY1RyeVRvUmVjbGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykpKTsK
LX0KKyAgICBjYXNlIE1lbW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQ6IHsKKyAgICAgICAgY2hhciog
c2xvd01lbW9yeSA9IG51bGxwdHI7CisgICAgICAgIHRyeUFsbG9jYXRlKAorICAgICAgICAgICAg
WyZdICgpIC0+IE1lbW9yeVJlc3VsdDo6S2luZCB7CisgICAgICAgICAgICAgICAgYXV0byByZXN1
bHQgPSBtZW1vcnlNYW5hZ2VyKCkudHJ5QWxsb2NhdGVHcm93YWJsZUJvdW5kc0NoZWNraW5nTWVt
b3J5KG1heGltdW1CeXRlcyk7CisgICAgICAgICAgICAgICAgc2xvd01lbW9yeSA9IGJpdHdpc2Vf
Y2FzdDxjaGFyKj4ocmVzdWx0LmJhc2VQdHIpOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQua2luZDsKKyAgICAgICAgICAgIH0sIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBzeW5jVHJ5VG9S
ZWNsYWltTWVtb3J5KTsKKyAgICAgICAgaWYgKCFzbG93TWVtb3J5KSB7CisgICAgICAgICAgICBt
ZW1vcnlNYW5hZ2VyKCkuZnJlZVBoeXNpY2FsQnl0ZXMoaW5pdGlhbEJ5dGVzKTsKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CiAKLU1lbW9yeTo6fk1lbW9yeSgpCi17Ci0g
ICAgaWYgKG1fbWVtb3J5KSB7Ci0gICAgICAgIG1lbW9yeU1hbmFnZXIoKS5mcmVlUGh5c2ljYWxC
eXRlcyhtX3NpemUpOwotICAgICAgICBzd2l0Y2ggKG1fbW9kZSkgewotICAgICAgICBjYXNlIE1l
bW9yeU1vZGU6OlNpZ25hbGluZzoKLSAgICAgICAgICAgIGlmIChtcHJvdGVjdChtZW1vcnkoKSwg
TWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkpIHsKLSAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHN0cmVycm9yKGVycm5v
KSwgIlxuIik7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1lbW9yeU1hbmFnZXIoKS5mcmVlRmFzdE1lbW9y
eShtZW1vcnkoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNZW1vcnlNb2Rl
OjpCb3VuZHNDaGVja2luZzoKLSAgICAgICAgICAgIEdpZ2FjYWdlOjpmcmVlVmlydHVhbFBhZ2Vz
KEdpZ2FjYWdlOjpQcmltaXRpdmUsIG1lbW9yeSgpLCBtX3NpemUpOwotICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGlmIChtcHJvdGVjdChzbG93TWVtb3J5ICsgaW5pdGlhbEJ5dGVzLCBtYXhp
bXVtQnl0ZXMgLSBpbml0aWFsQnl0ZXMsIFBST1RfTk9ORSkpIHsKKyAgICAgICAgICAgIGRhdGFM
b2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gTWVtb3J5OjpjcmVhdGUoYWRvcHRSZWYoKm5ldyBNZW1vcnlIYW5kbGUoc2xvd01lbW9y
eSwgaW5pdGlhbEJ5dGVzLCBtYXhpbXVtQnl0ZXMsIGluaXRpYWwsIG1heGltdW0sIHNoYXJpbmdN
b2RlLCBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpLCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVBy
ZXNzdXJlKSwgV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92ZShncm93U3Vj
Y2Vzc0NhbGxiYWNrKSk7CiAgICAgfQorICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCitNZW1vcnk6On5NZW1vcnkoKSA9IGRl
ZmF1bHQ7CisKIHNpemVfdCBNZW1vcnk6OmZhc3RNYXBwZWRSZWR6b25lQnl0ZXMoKQogewogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KFBhZ2VDb3VudDo6cGFnZVNpemUpICogT3B0aW9u
czo6d2ViQXNzZW1ibHlGYXN0TWVtb3J5UmVkem9uZVBhZ2VzKCk7CkBAIC0zNTksMTggKzQ1Miw3
NyBAQCBzaXplX3QgTWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKQogICAgIHJldHVybiAoc3RhdGlj
X2Nhc3Q8c2l6ZV90PigxKSA8PCAzMikgKyBmYXN0TWFwcGVkUmVkem9uZUJ5dGVzKCk7CiB9CiAK
LWJvb2wgTWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUZhc3RNZW1vcnkodm9pZCogYWRkcmVzcykK
K2Jvb2wgTWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUdyb3dhYmxlTWVtb3J5KHZvaWQqIGFkZHJl
c3MpCiB7Ci0gICAgcmV0dXJuIG1lbW9yeU1hbmFnZXIoKS5pc0FkZHJlc3NJbkZhc3RNZW1vcnko
YWRkcmVzcyk7CisgICAgcmV0dXJuIG1lbW9yeU1hbmFnZXIoKS5pc0FkZHJlc3NJbkdyb3dhYmxl
TWVtb3J5KGFkZHJlc3MpOwogfQogCi1FeHBlY3RlZDxQYWdlQ291bnQsIE1lbW9yeTo6R3Jvd0Zh
aWxSZWFzb24+IE1lbW9yeTo6Z3JvdyhQYWdlQ291bnQgZGVsdGEpCitFeHBlY3RlZDxQYWdlQ291
bnQsIE1lbW9yeTo6R3Jvd0ZhaWxSZWFzb24+IE1lbW9yeTo6Z3Jvd1NoYXJlZChQYWdlQ291bnQg
ZGVsdGEpCiB7Ci0gICAgY29uc3QgV2FzbTo6UGFnZUNvdW50IG9sZFBhZ2VDb3VudCA9IHNpemVJ
blBhZ2VzKCk7CisgICAgV2FzbTo6UGFnZUNvdW50IG9sZFBhZ2VDb3VudDsKKyAgICBXYXNtOjpQ
YWdlQ291bnQgbmV3UGFnZUNvdW50OworICAgIGF1dG8gcmVzdWx0ID0gKFsmXSgpIC0+IEV4cGVj
dGVkPFBhZ2VDb3VudCwgTWVtb3J5OjpHcm93RmFpbFJlYXNvbj4geworICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1faGFuZGxlLT5sb2NrKCkpOworCisgICAgICAgIG9sZFBhZ2VDb3Vu
dCA9IHNpemVJblBhZ2VzKCk7CisgICAgICAgIG5ld1BhZ2VDb3VudCA9IG9sZFBhZ2VDb3VudCAr
IGRlbHRhOworICAgICAgICBpZiAoIW5ld1BhZ2VDb3VudCB8fCAhbmV3UGFnZUNvdW50LmlzVmFs
aWQoKSkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChHcm93RmFpbFJlYXNvbjo6
SW52YWxpZEdyb3dTaXplKTsKKyAgICAgICAgaWYgKG5ld1BhZ2VDb3VudC5ieXRlcygpID4gTUFY
X0FSUkFZX0JVRkZFUl9TSVpFKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEdy
b3dGYWlsUmVhc29uOjpPdXRPZk1lbW9yeSk7CisKKyAgICAgICAgaWYgKCFkZWx0YS5wYWdlQ291
bnQoKSkKKyAgICAgICAgICAgIHJldHVybiBvbGRQYWdlQ291bnQ7CisKKyAgICAgICAgZGF0YUxv
Z0xuSWYodmVyYm9zZSwgIk1lbW9yeTo6Z3JvdygiLCBkZWx0YSwgIikgdG8gIiwgbmV3UGFnZUNv
dW50LCAiIGZyb20gIiwgKnRoaXMpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChuZXdQYWdlQ291
bnQgPiBQYWdlQ291bnQ6OmZyb21CeXRlcyhzaXplKCkpKTsKKworICAgICAgICBpZiAobWF4aW11
bSgpICYmIG5ld1BhZ2VDb3VudCA+IG1heGltdW0oKSkKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChHcm93RmFpbFJlYXNvbjo6V291bGRFeGNlZWRNYXhpbXVtKTsKKworICAgICAg
ICBzaXplX3QgZGVzaXJlZFNpemUgPSBuZXdQYWdlQ291bnQuYnl0ZXMoKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoZGVzaXJlZFNpemUgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoZGVzaXJlZFNpemUgPiBzaXplKCkpOworCisgICAgICAgIC8vIElm
IHRoZSBtZW1vcnkgaXMgTWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZCwgd2UgYWxyZWFkeSBhbGxv
Y2F0ZWQgZW5vdWdoIHZpcnR1YWwgYWRkcmVzcyBzcGFjZSBldmVuIGlmIHRoZSBtZW1vcnkgaXMg
Ym91bmQtY2hlY2tpbmcgbW9kZS4gV2UgcGVyZm9ybSBtcHJvdGVjdCB0byBleHRlbmQuCisgICAg
ICAgIHNpemVfdCBleHRyYUJ5dGVzID0gZGVzaXJlZFNpemUgLSBzaXplKCk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGV4dHJhQnl0ZXMpOworICAgICAgICBib29sIGFsbG9jYXRpb25TdWNjZXNz
ID0gdHJ5QWxsb2NhdGUoCisgICAgICAgICAgICBbJl0gKCkgLT4gTWVtb3J5UmVzdWx0OjpLaW5k
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3J5TWFuYWdlcigpLnRyeUFsbG9jYXRlUGh5
c2ljYWxCeXRlcyhleHRyYUJ5dGVzKTsKKyAgICAgICAgICAgIH0sIFtdKFdhc206Ok1lbW9yeTo6
Tm90aWZ5UHJlc3N1cmUpIHsgfSwgW10oTWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7IH0pOwor
ICAgICAgICBpZiAoIWFsbG9jYXRpb25TdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpPdXRPZk1lbW9yeSk7CisKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQobWVtb3J5KCkpOworCisgICAgICAgIC8vIFNpZ25hbGluZyBtZW1vcnkgbXVzdCBo
YXZlIGJlZW4gcHJlLWFsbG9jYXRlZCB2aXJ0dWFsbHkuCisgICAgICAgIHVpbnQ4X3QqIHN0YXJ0
QWRkcmVzcyA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtZW1vcnkoKSkgKyBzaXplKCk7CiAKKyAg
ICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1hcmtpbmcgV2ViQXNzZW1ibHkgbWVtb3J5J3Mg
IiwgUmF3UG9pbnRlcihtZW1vcnkoKSksICIgYXMgcmVhZCt3cml0ZSBpbiByYW5nZSBbIiwgUmF3
UG9pbnRlcihzdGFydEFkZHJlc3MpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXJ0QWRkcmVzcyArIGV4
dHJhQnl0ZXMpLCAiKSIpOworICAgICAgICBpZiAobXByb3RlY3Qoc3RhcnRBZGRyZXNzLCBleHRy
YUJ5dGVzLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKSkgeworICAgICAgICAgICAgZGF0YUxvZygi
bXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIFdURjo6
c3RvcmVTdG9yZUZlbmNlKCk7IC8vIEVuc3VyZSBzdG9yaW5nICJzaXplIiBoYXBwZW5zIGFmdGVy
IG1wcm90ZWN0IGlzIGRvbmUuCisgICAgICAgIG1faGFuZGxlLT5ncm93VG9TaXplKGRlc2lyZWRT
aXplKTsKKyAgICAgICAgcmV0dXJuIG9sZFBhZ2VDb3VudDsKKyAgICB9KCkpOworICAgIGlmIChy
ZXN1bHQpCisgICAgICAgIG1fZ3Jvd1N1Y2Nlc3NDYWxsYmFjayhHcm93U3VjY2Vzc1RhZywgb2xk
UGFnZUNvdW50LCBuZXdQYWdlQ291bnQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0V4cGVj
dGVkPFBhZ2VDb3VudCwgTWVtb3J5OjpHcm93RmFpbFJlYXNvbj4gTWVtb3J5Ojpncm93KFBhZ2VD
b3VudCBkZWx0YSkKK3sKICAgICBpZiAoIWRlbHRhLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpJbnZhbGlkRGVsdGEpOwotICAgIAorCisg
ICAgaWYgKHNoYXJpbmdNb2RlKCkgPT0gTWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZCkKKyAgICAg
ICAgcmV0dXJuIGdyb3dTaGFyZWQoZGVsdGEpOworCisgICAgY29uc3QgV2FzbTo6UGFnZUNvdW50
IG9sZFBhZ2VDb3VudCA9IHNpemVJblBhZ2VzKCk7CiAgICAgY29uc3QgV2FzbTo6UGFnZUNvdW50
IG5ld1BhZ2VDb3VudCA9IG9sZFBhZ2VDb3VudCArIGRlbHRhOwogICAgIGlmICghbmV3UGFnZUNv
dW50IHx8ICFuZXdQYWdlQ291bnQuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoR3Jvd0ZhaWxSZWFzb246OkludmFsaWRHcm93U2l6ZSk7CkBAIC0zOTEsNTIgKzU0Myw1
OCBAQCBFeHBlY3RlZDxQYWdlQ291bnQsIE1lbW9yeTo6R3Jvd0ZhaWxSZWFzb24+IE1lbW9yeTo6
Z3JvdyhQYWdlQ291bnQgZGVsdGEpCiAgICAgICAgIHJldHVybiBzdWNjZXNzKCk7CiAKICAgICBk
YXRhTG9nTG5JZih2ZXJib3NlLCAiTWVtb3J5Ojpncm93KCIsIGRlbHRhLCAiKSB0byAiLCBuZXdQ
YWdlQ291bnQsICIgZnJvbSAiLCAqdGhpcyk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobmV3UGFnZUNv
dW50ID4gUGFnZUNvdW50Ojpmcm9tQnl0ZXMobV9zaXplKSk7CisgICAgUkVMRUFTRV9BU1NFUlQo
bmV3UGFnZUNvdW50ID4gUGFnZUNvdW50Ojpmcm9tQnl0ZXMoc2l6ZSgpKSk7CiAKICAgICBpZiAo
bWF4aW11bSgpICYmIG5ld1BhZ2VDb3VudCA+IG1heGltdW0oKSkKICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpXb3VsZEV4Y2VlZE1heGltdW0pOwogCiAgICAg
c2l6ZV90IGRlc2lyZWRTaXplID0gbmV3UGFnZUNvdW50LmJ5dGVzKCk7CiAgICAgUkVMRUFTRV9B
U1NFUlQoZGVzaXJlZFNpemUgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKLSAgICBSRUxFQVNF
X0FTU0VSVChkZXNpcmVkU2l6ZSA+IG1fc2l6ZSk7Ci0gICAgc2l6ZV90IGV4dHJhQnl0ZXMgPSBk
ZXNpcmVkU2l6ZSAtIG1fc2l6ZTsKLSAgICBSRUxFQVNFX0FTU0VSVChleHRyYUJ5dGVzKTsKLSAg
ICBib29sIGFsbG9jYXRpb25TdWNjZXNzID0gdHJ5QWxsb2NhdGUoCi0gICAgICAgIFsmXSAoKSAt
PiBNZW1vcnlSZXN1bHQ6OktpbmQgewotICAgICAgICAgICAgcmV0dXJuIG1lbW9yeU1hbmFnZXIo
KS50cnlBbGxvY2F0ZVBoeXNpY2FsQnl0ZXMoZXh0cmFCeXRlcyk7Ci0gICAgICAgIH0sIG1fbm90
aWZ5TWVtb3J5UHJlc3N1cmUsIG1fc3luY1RyeVRvUmVjbGFpbU1lbW9yeSk7Ci0gICAgaWYgKCFh
bGxvY2F0aW9uU3VjY2VzcykKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEdyb3dGYWls
UmVhc29uOjpPdXRPZk1lbW9yeSk7Ci0KKyAgICBSRUxFQVNFX0FTU0VSVChkZXNpcmVkU2l6ZSA+
IHNpemUoKSk7CiAgICAgc3dpdGNoIChtb2RlKCkpIHsKICAgICBjYXNlIE1lbW9yeU1vZGU6OkJv
dW5kc0NoZWNraW5nOiB7CisgICAgICAgIGJvb2wgYWxsb2NhdGlvblN1Y2Nlc3MgPSB0cnlBbGxv
Y2F0ZSgKKyAgICAgICAgICAgIFsmXSAoKSAtPiBNZW1vcnlSZXN1bHQ6OktpbmQgeworICAgICAg
ICAgICAgICAgIHJldHVybiBtZW1vcnlNYW5hZ2VyKCkudHJ5QWxsb2NhdGVQaHlzaWNhbEJ5dGVz
KGRlc2lyZWRTaXplKTsKKyAgICAgICAgICAgIH0sIG1fbm90aWZ5TWVtb3J5UHJlc3N1cmUsIG1f
c3luY1RyeVRvUmVjbGFpbU1lbW9yeSk7CisgICAgICAgIGlmICghYWxsb2NhdGlvblN1Y2Nlc3Mp
CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoR3Jvd0ZhaWxSZWFzb246Ok91dE9m
TWVtb3J5KTsKKwogICAgICAgICBSRUxFQVNFX0FTU0VSVChtYXhpbXVtKCkuYnl0ZXMoKSAhPSAw
KTsKIAogICAgICAgICB2b2lkKiBuZXdNZW1vcnkgPSBHaWdhY2FnZTo6dHJ5QWxsb2NhdGVaZXJv
ZWRWaXJ0dWFsUGFnZXMoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgZGVzaXJlZFNpemUpOwogICAgICAg
ICBpZiAoIW5ld01lbW9yeSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChHcm93
RmFpbFJlYXNvbjo6T3V0T2ZNZW1vcnkpOwogCi0gICAgICAgIG1lbWNweShuZXdNZW1vcnksIG1l
bW9yeSgpLCBtX3NpemUpOwotICAgICAgICBpZiAobV9tZW1vcnkpCi0gICAgICAgICAgICBHaWdh
Y2FnZTo6ZnJlZVZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBtZW1vcnkoKSwgbV9z
aXplKTsKLSAgICAgICAgbV9tZW1vcnkgPSBDYWdlZE1lbW9yeShuZXdNZW1vcnksIGRlc2lyZWRT
aXplKTsKLSAgICAgICAgbV9tYXBwZWRDYXBhY2l0eSA9IGRlc2lyZWRTaXplOwotICAgICAgICBt
X3NpemUgPSBkZXNpcmVkU2l6ZTsKKyAgICAgICAgbWVtY3B5KG5ld01lbW9yeSwgbWVtb3J5KCks
IHNpemUoKSk7CisgICAgICAgIGF1dG8gbmV3SGFuZGxlID0gYWRvcHRSZWYoKm5ldyBNZW1vcnlI
YW5kbGUobmV3TWVtb3J5LCBkZXNpcmVkU2l6ZSwgZGVzaXJlZFNpemUsIGluaXRpYWwoKSwgbWF4
aW11bSgpLCBzaGFyaW5nTW9kZSgpLCBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpOworICAg
ICAgICBtX2hhbmRsZSA9IFdURk1vdmUobmV3SGFuZGxlKTsKKwogICAgICAgICBBU1NFUlQobWVt
b3J5KCkgPT0gbmV3TWVtb3J5KTsKICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MoKTsKICAgICB9CiAg
ICAgY2FzZSBNZW1vcnlNb2RlOjpTaWduYWxpbmc6IHsKKyAgICAgICAgc2l6ZV90IGV4dHJhQnl0
ZXMgPSBkZXNpcmVkU2l6ZSAtIHNpemUoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXh0cmFC
eXRlcyk7CisgICAgICAgIGJvb2wgYWxsb2NhdGlvblN1Y2Nlc3MgPSB0cnlBbGxvY2F0ZSgKKyAg
ICAgICAgICAgIFsmXSAoKSAtPiBNZW1vcnlSZXN1bHQ6OktpbmQgeworICAgICAgICAgICAgICAg
IHJldHVybiBtZW1vcnlNYW5hZ2VyKCkudHJ5QWxsb2NhdGVQaHlzaWNhbEJ5dGVzKGV4dHJhQnl0
ZXMpOworICAgICAgICAgICAgfSwgbV9ub3RpZnlNZW1vcnlQcmVzc3VyZSwgbV9zeW5jVHJ5VG9S
ZWNsYWltTWVtb3J5KTsKKyAgICAgICAgaWYgKCFhbGxvY2F0aW9uU3VjY2VzcykKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChHcm93RmFpbFJlYXNvbjo6T3V0T2ZNZW1vcnkpOwor
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1lbW9yeSgpKTsKKwogICAgICAgICAvLyBTaWduYWxp
bmcgbWVtb3J5IG11c3QgaGF2ZSBiZWVuIHByZS1hbGxvY2F0ZWQgdmlydHVhbGx5LgotICAgICAg
ICB1aW50OF90KiBzdGFydEFkZHJlc3MgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWVtb3J5KCkp
ICsgbV9zaXplOworICAgICAgICB1aW50OF90KiBzdGFydEFkZHJlc3MgPSBzdGF0aWNfY2FzdDx1
aW50OF90Kj4obWVtb3J5KCkpICsgc2l6ZSgpOwogICAgICAgICAKICAgICAgICAgZGF0YUxvZ0xu
SWYodmVyYm9zZSwgIk1hcmtpbmcgV2ViQXNzZW1ibHkgbWVtb3J5J3MgIiwgUmF3UG9pbnRlciht
ZW1vcnkoKSksICIgYXMgcmVhZCt3cml0ZSBpbiByYW5nZSBbIiwgUmF3UG9pbnRlcihzdGFydEFk
ZHJlc3MpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXJ0QWRkcmVzcyArIGV4dHJhQnl0ZXMpLCAiKSIp
OwogICAgICAgICBpZiAobXByb3RlY3Qoc3RhcnRBZGRyZXNzLCBleHRyYUJ5dGVzLCBQUk9UX1JF
QUQgfCBQUk9UX1dSSVRFKSkgewogICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVk
OiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAgICAgICBtX21lbW9yeS5yZWNhZ2UobV9zaXpl
LCBkZXNpcmVkU2l6ZSk7Ci0gICAgICAgIG1fc2l6ZSA9IGRlc2lyZWRTaXplOworCisgICAgICAg
IG1faGFuZGxlLT5ncm93VG9TaXplKGRlc2lyZWRTaXplKTsKICAgICAgICAgcmV0dXJuIHN1Y2Nl
c3MoKTsKICAgICB9CiAgICAgfQpAQCAtNDU5LDcgKzYxNyw4IEBAIHZvaWQgTWVtb3J5OjpyZWdp
c3Rlckluc3RhbmNlKEluc3RhbmNlKiBpbnN0YW5jZSkKIAogdm9pZCBNZW1vcnk6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBvdXQucHJpbnQoIk1lbW9yeSBhdCAiLCBSYXdQ
b2ludGVyKG1lbW9yeSgpKSwgIiwgc2l6ZSAiLCBtX3NpemUsICJCIGNhcGFjaXR5ICIsIG1fbWFw
cGVkQ2FwYWNpdHksICJCLCBpbml0aWFsICIsIG1faW5pdGlhbCwgIiBtYXhpbXVtICIsIG1fbWF4
aW11bSwgIiBtb2RlICIsIG1ha2VTdHJpbmcobV9tb2RlKSk7CisgICAgYXV0byBoYW5kbGUgPSBt
X2hhbmRsZS5jb3B5UmVmKCk7CisgICAgb3V0LnByaW50KCJNZW1vcnkgYXQgIiwgUmF3UG9pbnRl
cihoYW5kbGUtPm1lbW9yeSgpKSwgIiwgc2l6ZSAiLCBoYW5kbGUtPnNpemUoKSwgIkIgY2FwYWNp
dHkgIiwgaGFuZGxlLT5tYXBwZWRDYXBhY2l0eSgpLCAiQiwgaW5pdGlhbCAiLCBoYW5kbGUtPmlu
aXRpYWwoKSwgIiBtYXhpbXVtICIsIGhhbmRsZS0+bWF4aW11bSgpLCAiIG1vZGUgIiwgbWFrZVN0
cmluZyhoYW5kbGUtPm1vZGUoKSksICIgc2hhcmluZ01vZGUgIiwgbWFrZVN0cmluZyhoYW5kbGUt
PnNoYXJpbmdNb2RlKCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTWVtb3J5LmgKaW5kZXggOTY3MDgzOGYxNzExZjgyZTdiYjRlMTViZjhi
NWRkM2I4NDgyNmI1MS4uMDFlMmQ0NmYwYTQ2NmZlOGY3ZDJmYWU5ZjI4NzcxNGVjZGZjZmQ2MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuaApAQCAtNDQsMzkgKzQ0LDgw
IEBAIGNsYXNzIFByaW50U3RyZWFtOwogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworCiBuYW1lc3BhY2UgV2FzbSB7CiAKIGNsYXNzIEluc3RhbmNlOwog
Ci1jbGFzcyBNZW1vcnkgOiBwdWJsaWMgUmVmQ291bnRlZDxNZW1vcnk+IHsKK2NsYXNzIE1lbW9y
eUhhbmRsZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNZW1vcnlIYW5kbGU+
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZW1vcnlIYW5kbGUpOworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworICAgIGZyaWVuZCBMTEludE9mZnNldHNFeHRyYWN0b3I7CitwdWJs
aWM6CisgICAgTWVtb3J5SGFuZGxlKHZvaWQqLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG1hcHBlZENh
cGFjaXR5LCBQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIE1lbW9yeVNoYXJp
bmdNb2RlLCBNZW1vcnlNb2RlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB+TWVtb3J5SGFuZGxl
KCk7CisKKyAgICB2b2lkKiBtZW1vcnkoKSBjb25zdCB7IEFTU0VSVChtX21lbW9yeS5nZXRNYXlC
ZU51bGwobV9tYXBwZWRDYXBhY2l0eSkgPT0gbV9tZW1vcnkuZ2V0VW5zYWZlKCkpOyByZXR1cm4g
bV9tZW1vcnkuZ2V0TWF5QmVOdWxsKG1fbWFwcGVkQ2FwYWNpdHkpOyB9CisgICAgc2l6ZV90IHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBzaXplX3QgbWFwcGVkQ2FwYWNpdHko
KSBjb25zdCB7IHJldHVybiBtX21hcHBlZENhcGFjaXR5OyB9CisgICAgUGFnZUNvdW50IGluaXRp
YWwoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWw7IH0KKyAgICBQYWdlQ291bnQgbWF4aW11bSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11bTsgfQorICAgIE1lbW9yeVNoYXJpbmdNb2RlIHNoYXJp
bmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyaW5nTW9kZTsgfQorICAgIE1lbW9yeU1vZGUg
bW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZTaXplKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1lbW9yeUhhbmRsZSwgbV9zaXpl
KTsgfQorICAgIExvY2smIGxvY2soKSB7IHJldHVybiBtX2xvY2s7IH0KKworICAgIHZvaWQgZ3Jv
d1RvU2l6ZShzaXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIG1fc2l6ZSA9IHNpemU7CisgICAg
fQorCitwcml2YXRlOgorICAgIHVzaW5nIENhZ2VkTWVtb3J5ID0gQ2FnZWRQdHI8R2lnYWNhZ2U6
OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OworICAgIENhZ2VkTWVtb3J5IG1fbWVtb3J5
OworICAgIHNpemVfdCBtX3NpemUgeyAwIH07CisgICAgc2l6ZV90IG1fbWFwcGVkQ2FwYWNpdHkg
eyAwIH07CisgICAgUGFnZUNvdW50IG1faW5pdGlhbDsKKyAgICBQYWdlQ291bnQgbV9tYXhpbXVt
OworICAgIE1lbW9yeVNoYXJpbmdNb2RlIG1fc2hhcmluZ01vZGUgeyBNZW1vcnlTaGFyaW5nTW9k
ZTo6RGVmYXVsdCB9OworICAgIE1lbW9yeU1vZGUgbV9tb2RlIHsgTWVtb3J5TW9kZTo6Qm91bmRz
Q2hlY2tpbmcgfTsKKyAgICBMb2NrIG1fbG9jazsKK307CisKK2NsYXNzIE1lbW9yeSBmaW5hbCA6
IHB1YmxpYyBSZWZDb3VudGVkPE1lbW9yeT4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1l
bW9yeSk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgZnJpZW5kIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKIHB1YmxpYzoKICAgICB2b2lkIGR1bXAoV1RGOjpQcmludFN0cmVhbSYp
IGNvbnN0OwogCi0gICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEh
bV9tZW1vcnk7IH0KKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4g
ISFtX2hhbmRsZS0+bWVtb3J5KCk7IH0KICAgICAKICAgICBlbnVtIE5vdGlmeVByZXNzdXJlIHsg
Tm90aWZ5UHJlc3N1cmVUYWcgfTsKICAgICBlbnVtIFN5bmNUcnlUb1JlY2xhaW0geyBTeW5jVHJ5
VG9SZWNsYWltVGFnIH07CiAgICAgZW51bSBHcm93U3VjY2VzcyB7IEdyb3dTdWNjZXNzVGFnIH07
CiAKICAgICBzdGF0aWMgUmVmPE1lbW9yeT4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFJlZlB0cjxN
ZW1vcnk+IHRyeUNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIFdU
Rjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUs
IFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWlt
TWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNv
dW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmPE1lbW9yeT4gY3JlYXRlKFJlZjxNZW1vcnlIYW5kbGU+JiYsIFdURjo6RnVuY3Rpb248
dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rp
b248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6
OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93
U3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBzdGF0aWMgUmVmUHRyPE1lbW9yeT4gdHJ5Q3JlYXRlKFBh
Z2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgTWVtb3J5U2hhcmluZ01vZGUsIFdU
Rjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUs
IFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWlt
TWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNv
dW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKTsKIAotICAgIH5NZW1vcnkoKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSB+TWVtb3J5KCk7CiAKICAgICBzdGF0aWMgc2l6ZV90IGZhc3RNYXBwZWRS
ZWR6b25lQnl0ZXMoKTsKICAgICBzdGF0aWMgc2l6ZV90IGZhc3RNYXBwZWRCeXRlcygpOyAvLyBJ
bmNsdWRlcyByZWR6b25lLgotICAgIHN0YXRpYyBib29sIGFkZHJlc3NJc0luQWN0aXZlRmFzdE1l
bW9yeSh2b2lkKik7Ci0KLSAgICB2b2lkKiBtZW1vcnkoKSBjb25zdCB7IEFTU0VSVChtX21lbW9y
eS5nZXRNYXlCZU51bGwoc2l6ZSgpKSA9PSBtX21lbW9yeS5nZXRVbnNhZmUoKSk7IHJldHVybiBt
X21lbW9yeS5nZXRNYXlCZU51bGwoc2l6ZSgpKTsgfQotICAgIHNpemVfdCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9zaXplOyB9Ci0gICAgUGFnZUNvdW50IHNpemVJblBhZ2VzKCkgY29uc3QgeyBy
ZXR1cm4gUGFnZUNvdW50Ojpmcm9tQnl0ZXMobV9zaXplKTsgfQorICAgIHN0YXRpYyBib29sIGFk
ZHJlc3NJc0luQWN0aXZlR3Jvd2FibGVNZW1vcnkodm9pZCopOwogCi0gICAgUGFnZUNvdW50IGlu
aXRpYWwoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWw7IH0KLSAgICBQYWdlQ291bnQgbWF4aW11
bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11bTsgfQorICAgIHZvaWQqIG1lbW9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1faGFuZGxlLT5tZW1vcnkoKTsgfQorICAgIHNpemVfdCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9oYW5kbGUtPnNpemUoKTsgfQorICAgIFBhZ2VDb3VudCBzaXplSW5QYWdlcygp
IGNvbnN0IHsgcmV0dXJuIFBhZ2VDb3VudDo6ZnJvbUJ5dGVzKHNpemUoKSk7IH0KKyAgICBzaXpl
X3QgYm91bmRzQ2hlY2tpbmdTaXplKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUtPm1hcHBlZENh
cGFjaXR5KCk7IH0KKyAgICBQYWdlQ291bnQgaW5pdGlhbCgpIGNvbnN0IHsgcmV0dXJuIG1faGFu
ZGxlLT5pbml0aWFsKCk7IH0KKyAgICBQYWdlQ291bnQgbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJu
IG1faGFuZGxlLT5tYXhpbXVtKCk7IH0KKyAgICBNZW1vcnlIYW5kbGUmIGhhbmRsZSgpIHsgcmV0
dXJuIG1faGFuZGxlLmdldCgpOyB9CiAKLSAgICBNZW1vcnlNb2RlIG1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX21vZGU7IH0KKyAgICBNZW1vcnlTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1faGFuZGxlLT5zaGFyaW5nTW9kZSgpOyB9CisgICAgTWVtb3J5TW9kZSBtb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUtPm1vZGUoKTsgfQogCiAgICAgZW51bSBjbGFzcyBH
cm93RmFpbFJlYXNvbiB7CiAgICAgICAgIEludmFsaWREZWx0YSwKQEAgLTg5LDIxICsxMzAsMTYg
QEAgY2xhc3MgTWVtb3J5IDogcHVibGljIFJlZkNvdW50ZWQ8TWVtb3J5PiB7CiAKICAgICB2b2lk
IGNoZWNrKCkgeyAgQVNTRVJUKCFkZWxldGlvbkhhc0JlZ3VuKCkpOyB9CiAKLSAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mTWVtb3J5KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1lbW9y
eSwgbV9tZW1vcnkpOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNpemUoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoTWVtb3J5LCBtX3NpemUpOyB9CisgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZkhhbmRsZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihNZW1vcnksIG1f
aGFuZGxlKTsgfQogCiBwcml2YXRlOgogICAgIE1lbW9yeSgpOwotICAgIE1lbW9yeSh2b2lkKiBt
ZW1vcnksIFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgc2l6ZV90IG1hcHBl
ZENhcGFjaXR5LCBNZW1vcnlNb2RlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUp
PiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVj
bGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dT
dWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayk7Ci0g
ICAgTWVtb3J5KFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgV1RGOjpGdW5j
dGlvbjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgV1RGOjpG
dW5jdGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnks
IFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYm
IGdyb3dTdWNjZXNzQ2FsbGJhY2spOworICAgIE1lbW9yeShSZWY8TWVtb3J5SGFuZGxlPiYmLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJl
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFp
bU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VD
b3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayk7CisgICAgTWVtb3J5KFBhZ2VDb3VudCBpbml0
aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgTWVtb3J5U2hhcmluZ01vZGUsIFdURjo6RnVuY3Rpb248
dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rp
b248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6
OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93
U3VjY2Vzc0NhbGxiYWNrKTsKIAotICAgIHVzaW5nIENhZ2VkTWVtb3J5ID0gQ2FnZWRQdHI8R2ln
YWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwotICAgIENhZ2VkTWVtb3J5IG1f
bWVtb3J5OwotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAgUGFnZUNvdW50IG1faW5pdGlh
bDsKLSAgICBQYWdlQ291bnQgbV9tYXhpbXVtOwotICAgIHNpemVfdCBtX21hcHBlZENhcGFjaXR5
IHsgMCB9OwotICAgIE1lbW9yeU1vZGUgbV9tb2RlIHsgTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tp
bmcgfTsKKyAgICBFeHBlY3RlZDxQYWdlQ291bnQsIEdyb3dGYWlsUmVhc29uPiBncm93U2hhcmVk
KFBhZ2VDb3VudCk7CisKKyAgICBSZWY8TWVtb3J5SGFuZGxlPiBtX2hhbmRsZTsKICAgICBXVEY6
OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiBtX25vdGlmeU1lbW9yeVByZXNzdXJlOwog
ICAgIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4gbV9zeW5jVHJ5VG9SZWNs
YWltTWVtb3J5OwogICAgIFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50
LCBQYWdlQ291bnQpPiBtX2dyb3dTdWNjZXNzQ2FsbGJhY2s7CkBAIC0xMTksNyArMTU1LDcgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIGNsYXNzIE1lbW9yeSB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIHNpemVfdCBtYXhGYXN0TWVtb3J5Q291bnQoKSB7IHJldHVybiAwOyB9Ci0g
ICAgc3RhdGljIGJvb2wgYWRkcmVzc0lzSW5BY3RpdmVGYXN0TWVtb3J5KHZvaWQqKSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHN0YXRpYyBib29sIGFkZHJlc3NJc0luQWN0aXZlR3Jvd2FibGVNZW1v
cnkodm9pZCopIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
V2FzbQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUlu
Zm9ybWF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZv
cm1hdGlvbi5jcHAKaW5kZXggNmI0YzJkMWZkNzM4NGQ3ZGNhMzAzMThkNzJjMWY1NjExOWY1ZjU2
MC4uZjJjNmZhNTA4OTg4YzBjNDkwODAzNzE4MzIxNjg3MWU4NTQwY2ZlMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCkBA
IC00MiwxOSArNDIsMTkgQEAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBQaW5uZWRSZWdpc3Rl
ckluZm86OmdldCgpCiAgICAgICAgIGlmICghQ29udGV4dDo6dXNlRmFzdFRMUygpKQogICAgICAg
ICAgICAgKytudW1iZXJPZlBpbm5lZFJlZ2lzdGVyczsKICAgICAgICAgR1BSUmVnIGJhc2VNZW1v
cnlQb2ludGVyID0gR1BSSW5mbzo6cmVnQ1MzOwotICAgICAgICBHUFJSZWcgc2l6ZVJlZ2lzdGVy
ID0gR1BSSW5mbzo6cmVnQ1M0OworICAgICAgICBHUFJSZWcgYm91bmRzQ2hlY2tpbmdTaXplUmVn
aXN0ZXIgPSBHUFJJbmZvOjpyZWdDUzQ7CiAgICAgICAgIEdQUlJlZyB3YXNtQ29udGV4dEluc3Rh
bmNlUG9pbnRlciA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIGlmICghQ29udGV4dDo6dXNlRmFz
dFRMUygpKQogICAgICAgICAgICAgd2FzbUNvbnRleHRJbnN0YW5jZVBvaW50ZXIgPSBHUFJJbmZv
OjpyZWdDUzA7CiAKLSAgICAgICAgc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvLmNvbnN0cnVjdChz
aXplUmVnaXN0ZXIsIGJhc2VNZW1vcnlQb2ludGVyLCB3YXNtQ29udGV4dEluc3RhbmNlUG9pbnRl
cik7CisgICAgICAgIHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mby5jb25zdHJ1Y3QoYm91bmRzQ2hl
Y2tpbmdTaXplUmVnaXN0ZXIsIGJhc2VNZW1vcnlQb2ludGVyLCB3YXNtQ29udGV4dEluc3RhbmNl
UG9pbnRlcik7CiAgICAgfSk7CiAKICAgICByZXR1cm4gc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZv
LmdldCgpOwogfQogCi1QaW5uZWRSZWdpc3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyhHUFJS
ZWcgc2l6ZVJlZ2lzdGVyLCBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXIsIEdQUlJlZyB3YXNtQ29u
dGV4dEluc3RhbmNlUG9pbnRlcikKLSAgICA6IHNpemVSZWdpc3RlcihzaXplUmVnaXN0ZXIpCitQ
aW5uZWRSZWdpc3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyhHUFJSZWcgYm91bmRzQ2hlY2tp
bmdTaXplUmVnaXN0ZXIsIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlciwgR1BSUmVnIHdhc21Db250
ZXh0SW5zdGFuY2VQb2ludGVyKQorICAgIDogYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIoYm91
bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIpCiAgICAgLCBiYXNlTWVtb3J5UG9pbnRlcihiYXNlTWVt
b3J5UG9pbnRlcikKICAgICAsIHdhc21Db250ZXh0SW5zdGFuY2VQb2ludGVyKHdhc21Db250ZXh0
SW5zdGFuY2VQb2ludGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTWVtb3J5SW5mb3JtYXRpb24uaAppbmRleCA0YjhlZjhlOGJjN2FjN2VmYzlhNzk5NDk0ZTI2
ODkxZmE4ZGQ2MjlmLi4yM2E4NjUzMGJhZTEwZmRmN2UwZDQyZTM1YWI5MDc3YmI3M2RmNjVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRp
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRp
b24uaApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsK
IAogc3RydWN0IFBpbm5lZFNpemVSZWdpc3RlckluZm8gewotICAgIEdQUlJlZyBzaXplUmVnaXN0
ZXI7CisgICAgR1BSUmVnIGJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyOwogICAgIHVuc2lnbmVk
IHNpemVPZmZzZXQ7CiB9OwogCkBAIC01NiwxMSArNTYsMTEgQEAgY2xhc3MgUGlubmVkUmVnaXN0
ZXJJbmZvIHsKICAgICAgICAgaWYgKHdhc21Db250ZXh0SW5zdGFuY2VQb2ludGVyICE9IEludmFs
aWRHUFJSZWcpCiAgICAgICAgICAgICByZXN1bHQuc2V0KHdhc21Db250ZXh0SW5zdGFuY2VQb2lu
dGVyKTsKICAgICAgICAgaWYgKG1vZGUgIT0gTWVtb3J5TW9kZTo6U2lnbmFsaW5nKQotICAgICAg
ICAgICAgcmVzdWx0LnNldChzaXplUmVnaXN0ZXIpOworICAgICAgICAgICAgcmVzdWx0LnNldChi
b3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogCi0gICAgR1BSUmVnIHNpemVSZWdpc3RlcjsKKyAgICBHUFJSZWcgYm91bmRzQ2hlY2tpbmdT
aXplUmVnaXN0ZXI7CiAgICAgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyOwogICAgIEdQUlJlZyB3
YXNtQ29udGV4dEluc3RhbmNlUG9pbnRlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5TW9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTWVtb3J5TW9kZS5jcHAKaW5kZXggYjFiYzk4NWRkNzZiYmZmYjVkMmJiNWEzZDEw
OGMwNjdhNDczNzcyZC4uOWFkOGY4MGI2YWEyMmJmZjAzMmJkZDQ2ZDE3ODZlZmNkZWYzY2M0MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeU1vZGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlNb2RlLmNwcApAQCAt
NDIsNiArNDIsMTYgQEAgY29uc3QgY2hhciogbWFrZVN0cmluZyhNZW1vcnlNb2RlIG1vZGUpCiAg
ICAgcmV0dXJuICIiOwogfQogCitjb25zdCBjaGFyKiBtYWtlU3RyaW5nKE1lbW9yeVNoYXJpbmdN
b2RlIHNoYXJpbmdNb2RlKQoreworICAgIHN3aXRjaCAoc2hhcmluZ01vZGUpIHsKKyAgICBjYXNl
IE1lbW9yeVNoYXJpbmdNb2RlOjpEZWZhdWx0OiByZXR1cm4gIkRlZmF1bHQiOworICAgIGNhc2Ug
TWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZDogcmV0dXJuICJTaGFyZWQiOworICAgIH0KKyAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAiIjsKK30KKwogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6Oldhc20KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlNb2RlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5TW9kZS5oCmluZGV4IGMwMzg3NDZk
NjFkNDJhOTUzY2NmNGI1ZDBmYjIwNzVlOTI2NTQxZjguLjUxYjIxMzM2Yzg5NDZiZGViODdjZjEz
OTVhZDk5NzUzMTM1MTU4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21NZW1vcnlNb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1l
bW9yeU1vZGUuaApAQCAtNDAsNiArNDAsMTMgQEAgZW51bSBjbGFzcyBNZW1vcnlNb2RlIDogdWlu
dDhfdCB7CiBzdGF0aWMgY29uc3RleHByIHNpemVfdCBOdW1iZXJPZk1lbW9yeU1vZGVzID0gMjsK
IEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IGNoYXIqIG1ha2VTdHJpbmcoTWVtb3J5TW9kZSk7CiAK
K2VudW0gY2xhc3MgTWVtb3J5U2hhcmluZ01vZGUgOiB1aW50OF90IHsKKyAgICBEZWZhdWx0LAor
ICAgIFNoYXJlZCwKK307CisKK0pTX0VYUE9SVF9QUklWQVRFIGNvbnN0IGNoYXIqIG1ha2VTdHJp
bmcoTWVtb3J5U2hhcmluZ01vZGUpOworCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNUb1dhc20uY3BwCmluZGV4IGQ4ZDE1MjE0ZDQwZjBhODVjMzFmMmEyYjI5MmY4MzVkM2Yz
NjlkNjYuLmJlOTQ4NzRhNWE0YjQ1N2QyMzJlZmQ4OGQ3NzlkMWJiM2Q5YjNmZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKQEAgLTIyMSw3ICsyMjEsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRlSlNUb1dhc21XcmFwcGVy
KENDYWxsSGVscGVycyYgaml0LCBjb25zdAogCiAgICAgaWYgKCEhaW5mby5tZW1vcnkpIHsKICAg
ICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVyOwot
ICAgICAgICBHUFJSZWcgc2NyYXRjaE9yU2l6ZSA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpLnBy
b2xvZ3VlU2NyYXRjaEdQUnNbMF07CisgICAgICAgIEdQUlJlZyBzY3JhdGNoT3JCb3VuZHNDaGVj
a2luZ1NpemUgPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5wcm9sb2d1ZVNjcmF0Y2hHUFJzWzBd
OwogCiAgICAgICAgIGlmIChDb250ZXh0Ojp1c2VGYXN0VExTKCkpCiAgICAgICAgICAgICBqaXQu
bG9hZFdhc21Db250ZXh0SW5zdGFuY2UoYmFzZU1lbW9yeSk7CkBAIC0yMjksMTUgKzIyOSwxNSBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRlSlNUb1dhc21XcmFwcGVy
KENDYWxsSGVscGVycyYgaml0LCBjb25zdAogICAgICAgICBHUFJSZWcgY3VycmVudEluc3RhbmNl
R1BSID0gQ29udGV4dDo6dXNlRmFzdFRMUygpID8gYmFzZU1lbW9yeSA6IHdhc21Db250ZXh0SW5z
dGFuY2VHUFI7CiAgICAgICAgIGlmIChpc0FSTTY0RSgpKSB7CiAgICAgICAgICAgICBpZiAobW9k
ZSAhPSBXYXNtOjpNZW1vcnlNb2RlOjpTaWduYWxpbmcpCi0gICAgICAgICAgICAgICAgc2NyYXRj
aE9yU2l6ZSA9IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyOwotICAgICAgICAgICAgaml0LmxvYWRQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGN1cnJlbnRJbnN0YW5jZUdQUiwgV2FzbTo6SW5zdGFu
Y2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSwgc2NyYXRjaE9yU2l6ZSk7CisgICAgICAg
ICAgICAgICAgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplID0gcGlubmVkUmVncy5ib3VuZHND
aGVja2luZ1NpemVSZWdpc3RlcjsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QWRkcmVzcyhjdXJyZW50SW5zdGFuY2VHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNh
Y2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpKSwgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChtb2RlICE9IFdhc206Ok1lbW9yeU1v
ZGU6OlNpZ25hbGluZykKLSAgICAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoY3VycmVudEluc3RhbmNlR1BSLCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNo
ZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlcik7CisgICAgICAgICAgICAg
ICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGN1cnJlbnRJbnN0YW5jZUdQUiwg
V2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkpLCBwaW5u
ZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsKICAgICAgICAgfQogCiAgICAgICAg
IGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjdXJyZW50SW5zdGFuY2VHUFIsIFdh
c206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7Ci0gICAg
ICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5
LCBzY3JhdGNoT3JTaXplLCBzY3JhdGNoT3JTaXplKTsKKyAgICAgICAgaml0LmNhZ2VDb25kaXRp
b25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHNjcmF0Y2hPckJvdW5kc0No
ZWNraW5nU2l6ZSwgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplKTsKICAgICB9CiAKICAgICBD
Q2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC50aHJlYWRTYWZlUGF0Y2hhYmxlTmVhckNhbGwo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UuY3BwCmluZGV4IDY2OTYxYzIzMmE0ZWE0ZTQ3NGY2NzczOTMyMzJjZDFlYTJl
YzRjNTkuLmU0OWZjNjkyNWE5OTVlNWUwYWY1OWJlZjNlNjAyMGZiZDQwM2JhMGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3Rh
bmNlLmNwcApAQCAtMjkxLDcgKzI5MSw3IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNXZWJB
c3NlbWJseUluc3RhbmNlOjp0cnlDcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCoKICAgICAg
ICAgICAgIGF1dG8qIGpzTWVtb3J5ID0gSlNXZWJBc3NlbWJseU1lbW9yeTo6dHJ5Q3JlYXRlKGds
b2JhbE9iamVjdCwgdm0sIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlNZW1vcnlTdHJ1Y3R1cmUo
KSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIp
OwogCi0gICAgICAgICAgICBSZWZQdHI8V2FzbTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1v
cnk6OnRyeUNyZWF0ZShtb2R1bGVJbmZvcm1hdGlvbi5tZW1vcnkuaW5pdGlhbCgpLCBtb2R1bGVJ
bmZvcm1hdGlvbi5tZW1vcnkubWF4aW11bSgpLAorICAgICAgICAgICAgUmVmUHRyPFdhc206Ok1l
bW9yeT4gbWVtb3J5ID0gV2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUobW9kdWxlSW5mb3JtYXRpb24u
bWVtb3J5LmluaXRpYWwoKSwgbW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5Lm1heGltdW0oKSwgV2Fz
bTo6TWVtb3J5U2hhcmluZ01vZGU6OkRlZmF1bHQsCiAgICAgICAgICAgICAgICAgWyZ2bV0gKFdh
c206Ok1lbW9yeTo6Tm90aWZ5UHJlc3N1cmUpIHsgdm0uaGVhcC5jb2xsZWN0QXN5bmMoQ29sbGVj
dGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5
OjpTeW5jVHJ5VG9SZWNsYWltKSB7IHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVjdGlvblNjb3Bl
OjpGdWxsKTsgfSwKICAgICAgICAgICAgICAgICBbJnZtLCBqc01lbW9yeV0gKFdhc206Ok1lbW9y
eTo6R3Jvd1N1Y2Nlc3MsIFdhc206OlBhZ2VDb3VudCBvbGRQYWdlQ291bnQsIFdhc206OlBhZ2VD
b3VudCBuZXdQYWdlQ291bnQpIHsganNNZW1vcnktPmdyb3dTdWNjZXNzQ2FsbGJhY2sodm0sIG9s
ZFBhZ2VDb3VudCwgbmV3UGFnZUNvdW50KTsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCmluZGV4IGRmYjAyNzAzMTYz
MmUwM2JlM2YzOWI1OGY5OGIzNmU4MmY3MjYyM2YuLmY3YWM2NDQ5ODIxYmYxMDdhMTRmNzQ4ZDAx
MmQxZjI5YzdiNzNlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRl
ICJBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKKyNpbmNsdWRlICJP
YmplY3RDb25zdHJ1Y3Rvci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzIsMTcgKzczLDM0
IEBAIEpTV2ViQXNzZW1ibHlNZW1vcnk6OkpTV2ViQXNzZW1ibHlNZW1vcnkoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotSlNBcnJheUJ1ZmZlciogSlNXZWJBc3NlbWJseU1l
bW9yeTo6YnVmZmVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTQXJy
YXlCdWZmZXIqIEpTV2ViQXNzZW1ibHlNZW1vcnk6OmJ1ZmZlcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogewotICAgIGlmIChtX2J1ZmZlcldyYXBwZXIpCi0gICAgICAgIHJldHVybiBt
X2J1ZmZlcldyYXBwZXIuZ2V0KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0
byogd3JhcHBlciA9IG1fYnVmZmVyV3JhcHBlci5nZXQoKTsKKyAgICBpZiAod3JhcHBlcikgewor
ICAgICAgICBpZiAobV9tZW1vcnktPnNoYXJpbmdNb2RlKCkgPT0gV2FzbTo6TWVtb3J5U2hhcmlu
Z01vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAotICAgIC8vIFdl
IGNhbid0IHVzZSBhIHJlZiBoZXJlIHNpbmNlIGl0IGRvZXNuJ3QgaGF2ZSBhIGNvcHkgY29uc3Ry
dWN0b3IuLi4KLSAgICBSZWY8V2FzbTo6TWVtb3J5PiBwcm90ZWN0ZWRNZW1vcnkgPSBtX21lbW9y
eS5nZXQoKTsKLSAgICBhdXRvIGRlc3RydWN0b3IgPSBjcmVhdGVTaGFyZWRUYXNrPHZvaWQodm9p
ZCopPihbcHJvdGVjdGVkTWVtb3J5ID0gV1RGTW92ZShwcm90ZWN0ZWRNZW1vcnkpXSAodm9pZCop
IHsgfSk7CisgICAgICAgIEFTU0VSVChtX21lbW9yeS0+c2hhcmluZ01vZGUoKSA9PSBXYXNtOjpN
ZW1vcnlTaGFyaW5nTW9kZTo6U2hhcmVkKTsKKyAgICAgICAgLy8gSWYgU2hhcmVkQXJyYXlCdWZm
ZXIncyB1bmRlcmx5aW5nIG1lbW9yeSBpcyBub3QgZ3Jvd24sIHdlIGNvbnRpbnVlIHVzaW5nIGNh
Y2hlZCB3cmFwcGVyLgorICAgICAgICBpZiAod3JhcHBlci0+aW1wbCgpLT5ieXRlTGVuZ3RoKCkg
PT0gbWVtb3J5KCkuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgfQor
CisgICAgUmVmPFdhc206Ok1lbW9yeUhhbmRsZT4gcHJvdGVjdGVkSGFuZGxlID0gbV9tZW1vcnkt
PmhhbmRsZSgpOworICAgIGF1dG8gZGVzdHJ1Y3RvciA9IGNyZWF0ZVNoYXJlZFRhc2s8dm9pZCh2
b2lkKik+KFtwcm90ZWN0ZWRIYW5kbGUgPSBXVEZNb3ZlKHByb3RlY3RlZEhhbmRsZSldICh2b2lk
KikgeyB9KTsKICAgICBtX2J1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMobWVt
b3J5KCkubWVtb3J5KCksIG1lbW9yeSgpLnNpemUoKSwgV1RGTW92ZShkZXN0cnVjdG9yKSk7CiAg
ICAgbV9idWZmZXItPm1ha2VXYXNtTWVtb3J5KCk7Ci0gICAgbV9idWZmZXJXcmFwcGVyLnNldCh2
bSwgdGhpcywgSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5QnVm
ZmVyU3RydWN0dXJlKEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpLCBtX2J1ZmZlci5n
ZXQoKSkpOworICAgIGlmIChtX21lbW9yeS0+c2hhcmluZ01vZGUoKSA9PSBXYXNtOjpNZW1vcnlT
aGFyaW5nTW9kZTo6U2hhcmVkKQorICAgICAgICBtX2J1ZmZlci0+bWFrZVNoYXJlZCgpOworICAg
IGF1dG8qIGFycmF5QnVmZmVyID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QtPmFycmF5QnVmZmVyU3RydWN0dXJlKG1fYnVmZmVyLT5zaGFyaW5nTW9kZSgpKSwgbV9idWZm
ZXIuZ2V0KCkpOworICAgIGlmIChtX21lbW9yeS0+c2hhcmluZ01vZGUoKSA9PSBXYXNtOjpNZW1v
cnlTaGFyaW5nTW9kZTo6U2hhcmVkKSB7CisgICAgICAgIG9iamVjdENvbnN0cnVjdG9yRnJlZXpl
KGdsb2JhbE9iamVjdCwgYXJyYXlCdWZmZXIpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIG1fYnVmZmVyV3JhcHBlci5zZXQodm0sIHRo
aXMsIGFycmF5QnVmZmVyKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX2J1ZmZlcldyYXBwZXIpOwog
ICAgIHJldHVybiBtX2J1ZmZlcldyYXBwZXIuZ2V0KCk7CiB9CkBAIC0xMTcsNyArMTM1LDggQEAg
dm9pZCBKU1dlYkFzc2VtYmx5TWVtb3J5Ojpncm93U3VjY2Vzc0NhbGxiYWNrKFZNJiB2bSwgV2Fz
bTo6UGFnZUNvdW50IG9sZFBhZ2VDb3UKIHsKICAgICAvLyBXZSBuZWVkIHRvIGNsZWFyIG91dCB0
aGUgb2xkIGFycmF5IGJ1ZmZlciBiZWNhdXNlIGl0IG1pZ2h0IG5vdyBiZSBwb2ludGluZyB0byBz
dGFsZSBtZW1vcnkuCiAgICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyLT5kZXRh
Y2godm0pOworICAgICAgICBpZiAobV9tZW1vcnktPnNoYXJpbmdNb2RlKCkgPT0gV2FzbTo6TWVt
b3J5U2hhcmluZ01vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICBtX2J1ZmZlci0+ZGV0YWNoKHZt
KTsKICAgICAgICAgbV9idWZmZXIgPSBudWxscHRyOwogICAgICAgICBtX2J1ZmZlcldyYXBwZXIu
Y2xlYXIoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5TWVtb3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5TWVtb3J5LmgKaW5kZXggYWI5YzQ3NDZiM2NmYTI1MGQ1MWViY2RmNDJiM2E1
ZmRiOWFiNTU1ZC4uZTQ5NDkwMzY5MmU1OTU0MWNmYTc5MDMzNzZhNDUzMmYwNTYzYTQ0OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9y
eS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1v
cnkuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCi0jaW5j
bHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgogI2lu
Y2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgpAQCAtNDksMTYgKzQ5LDE2IEBAIGNsYXNzIEpTV2ViQXNzZW1ibHlNZW1vcnkg
ZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgICAgIHJldHVybiB2bS53ZWJB
c3NlbWJseU1lbW9yeVNwYWNlPG1vZGU+KCk7CiAgICAgfQogCi0gICAgc3RhdGljIEpTV2ViQXNz
ZW1ibHlNZW1vcnkqIHRyeUNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFZNJiwgU3RydWN0dXJlKik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTV2ViQXNzZW1ibHlNZW1vcnkqIHRyeUNy
ZWF0ZShKU0dsb2JhbE9iamVjdCosIFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAog
ICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAgICB2b2lkIGFkb3B0KFJlZjxXYXNtOjpNZW1v
cnk+JiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRvcHQoUmVmPFdhc206Ok1lbW9y
eT4mJik7CiAgICAgV2FzbTo6TWVtb3J5JiBtZW1vcnkoKSB7IHJldHVybiBtX21lbW9yeS5nZXQo
KTsgfQotICAgIEpTQXJyYXlCdWZmZXIqIGJ1ZmZlcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0Kik7
CisgICAgSlNBcnJheUJ1ZmZlciogYnVmZmVyKEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgV2FzbTo6
UGFnZUNvdW50IGdyb3coVk0mLCBKU0dsb2JhbE9iamVjdCosIHVpbnQzMl90IGRlbHRhKTsKLSAg
ICB2b2lkIGdyb3dTdWNjZXNzQ2FsbGJhY2soVk0mLCBXYXNtOjpQYWdlQ291bnQgb2xkUGFnZUNv
dW50LCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50KTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIGdyb3dTdWNjZXNzQ2FsbGJhY2soVk0mLCBXYXNtOjpQYWdlQ291bnQgb2xkUGFnZUNv
dW50LCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50KTsKIAogcHJpdmF0ZToKICAgICBKU1dl
YkFzc2VtYmx5TWVtb3J5KFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCmluZGV4IDk5Mjc2YzJk
OWU2MjdhZDIxNTNkZGZjYTQ5Yzc3OGUwYzc5YzgzY2EuLjc4ZGE2ZGMzZjRlYWVhZDNjODAwYWU0
MmVjMGU2ODgxNzY1ZTQ2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC0zNTcsMjAgKzM1NywyMCBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gV2ViQXNzZW1ibHlGdW5jdGlvbjo6anND
YWxsRW50cnlwb2ludFNsb3coKQogCiAgICAgaWYgKCEhbW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5
KSB7CiAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9p
bnRlcjsKLSAgICAgICAgR1BSUmVnIHNjcmF0Y2hPclNpemUgPSBzdGFja0xpbWl0R1BSOworICAg
ICAgICBHUFJSZWcgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplID0gc3RhY2tMaW1pdEdQUjsK
ICAgICAgICAgYXV0byBtb2RlID0gaW5zdGFuY2UoKS0+bWVtb3J5TW9kZSgpOwogCiAgICAgICAg
IGlmIChpc0FSTTY0RSgpKSB7CiAgICAgICAgICAgICBpZiAobW9kZSAhPSBXYXNtOjpNZW1vcnlN
b2RlOjpTaWduYWxpbmcpCi0gICAgICAgICAgICAgICAgc2NyYXRjaE9yU2l6ZSA9IHBpbm5lZFJl
Z3Muc2l6ZVJlZ2lzdGVyOwotICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHNjcmF0Y2hHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNp
emUoKSksIHNjcmF0Y2hPclNpemUpOworICAgICAgICAgICAgICAgIHNjcmF0Y2hPckJvdW5kc0No
ZWNraW5nU2l6ZSA9IHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXI7CisgICAg
ICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgV2Fz
bTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkpLCBzY3JhdGNo
T3JCb3VuZHNDaGVja2luZ1NpemUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYg
KG1vZGUgIT0gV2FzbTo6TWVtb3J5TW9kZTo6U2lnbmFsaW5nKQotICAgICAgICAgICAgICAgIGpp
dC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBXYXNtOjpJbnN0YW5j
ZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlcik7
CisgICAgICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0
Y2hHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgp
KSwgcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7CiAgICAgICAgIH0KIAog
ICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgV2Fz
bTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKLSAgICAg
ICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnks
IHNjcmF0Y2hPclNpemUsIHNjcmF0Y2hPclNpemUpOworICAgICAgICBqaXQuY2FnZUNvbmRpdGlv
bmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgc2NyYXRjaE9yQm91bmRzQ2hl
Y2tpbmdTaXplLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOwogICAgIH0KIAogICAgIC8v
IFdlIHVzZSB0aGlzIGNhbGxlZSB0byBpbmRpY2F0ZSBob3cgdG8gdW53aW5kIHBhc3QgdGhlc2Ug
dHlwZXMgb2YgZnJhbWVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcAppbmRleCA1MGNjY2Ey
NDFmZDViZTk3OTU2ZGYwODhiOTRhOGQ4YWIwZmYwZDA1Li4yNTZlYjBmZmMzNGFiNzM1YmM1MzI4
N2M3NWY2YjA3ZWM2YjhmN2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcApAQCAtNTYs
OCArNTYsNiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0SlNXZWJBc3NlbWJs
eU1lbW9yeSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgIT0gMSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJXZWJBc3NlbWJseS5NZW1vcnkg
ZXhwZWN0cyBleGFjdGx5IG9uZSBhcmd1bWVudCJfcykpKTsKIAogICAgIEpTT2JqZWN0KiBtZW1v
cnlEZXNjcmlwdG9yOwogICAgIHsKQEAgLTEwMiwxMCArMTAwLDIzIEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TWVtb3J5LCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBXYXNtOjpNZW1vcnlTaGFyaW5nTW9k
ZSBzaGFyaW5nTW9kZSA9IFdhc206Ok1lbW9yeVNoYXJpbmdNb2RlOjpEZWZhdWx0OworICAgIEpT
VmFsdWUgc2hhcmVkVmFsdWUgPSBtZW1vcnlEZXNjcmlwdG9yLT5nZXQoZ2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2hhcmVkIikpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgYm9vbCBzaGFyZWQgPSBz
aGFyZWRWYWx1ZS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGlmIChzaGFyZWQpIHsKKyAg
ICAgICAgaWYgKCFtYXhpbXVtUGFnZUNvdW50KQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiJ21heGltdW0nIHBhZ2UgY291bnQg
bXVzdCBiZSBkZWZpbmVkIGlmICdzaGFyZWQnIGlzIHRydWUiX3MpOworICAgICAgICBpZiAoIU9w
dGlvbnM6OnVzZVNoYXJlZEFycmF5QnVmZmVyKCkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJTaGFyZWQgV2ViQXNzZW1ibHku
TWVtb3J5IGFuZCBTaGFyZWRBcnJheUJ1ZmZlciBhcmUgbm90IGVuYWJsZWQiX3MpOworICAgICAg
ICBzaGFyaW5nTW9kZSA9IFdhc206Ok1lbW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQ7CisgICAgfQor
CiAgICAgYXV0byoganNNZW1vcnkgPSBKU1dlYkFzc2VtYmx5TWVtb3J5Ojp0cnlDcmVhdGUoZ2xv
YmFsT2JqZWN0LCB2bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseU1lbW9yeVN0cnVjdHVyZSgp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCi0gICAgUmVmUHRyPFdhc206Ok1lbW9yeT4gbWVtb3J5ID0gV2FzbTo6TWVtb3J5Ojp0cnlD
cmVhdGUoaW5pdGlhbFBhZ2VDb3VudCwgbWF4aW11bVBhZ2VDb3VudCwKKyAgICBSZWZQdHI8V2Fz
bTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OnRyeUNyZWF0ZShpbml0aWFsUGFnZUNv
dW50LCBtYXhpbXVtUGFnZUNvdW50LCBzaGFyaW5nTW9kZSwKICAgICAgICAgWyZ2bV0gKFdhc206
Ok1lbW9yeTo6Tm90aWZ5UHJlc3N1cmUpIHsgdm0uaGVhcC5jb2xsZWN0QXN5bmMoQ29sbGVjdGlv
blNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgWyZ2bV0gKFdhc206Ok1lbW9yeTo6U3luY1RyeVRv
UmVjbGFpbSkgeyB2bS5oZWFwLmNvbGxlY3RTeW5jKENvbGxlY3Rpb25TY29wZTo6RnVsbCk7IH0s
CiAgICAgICAgIFsmdm0sIGpzTWVtb3J5XSAoV2FzbTo6TWVtb3J5OjpHcm93U3VjY2VzcywgV2Fz
bTo6UGFnZUNvdW50IG9sZFBhZ2VDb3VudCwgV2FzbTo6UGFnZUNvdW50IG5ld1BhZ2VDb3VudCkg
eyBqc01lbW9yeS0+Z3Jvd1N1Y2Nlc3NDYWxsYmFjayh2bSwgb2xkUGFnZUNvdW50LCBuZXdQYWdl
Q291bnQpOyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcAppbmRleCBhYjRhMmJmZWVlZmE2ODQx
N2MzOGNjMTk1NGU1ZTk3ZjYyZjYwMDliLi43ZTIwOGMzMTAxYzIzNzE2MzIyOWNjNTc5MjdhZWE2
YjhmMGIyNWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCkBAIC05Myw3ICs5Myw3IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0J1ZmZlciwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iCiAKICAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiBtZW1vcnkg
PSBnZXRNZW1vcnkoZ2xvYmFsT2JqZWN0LCB2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7IAog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKG1lbW9yeS0+YnVmZmVyKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2Jq
ZWN0KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShtZW1vcnktPmJ1ZmZlcihnbG9iYWxPYmplY3QpKSk7CiB9CiAKIFdlYkFzc2VtYmx5TWVtb3J5
UHJvdG90eXBlKiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAppbmRl
eCAzMWMyMWUzYzQzNzAyYzk5ZmI2ZjgwOTU0ZDBjNWU0NzdkNzBkZjdkLi45ZGQyZTdiZjUyMTg3
ZmIzNDVlZWYwZTdmNGZhMjYzNDViMmVhNDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCkBAIC01NjYs
OCArNTY2LDkgQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB9OwogCiAgICAgYXV0byBmb3JFYWNoU2Vn
bWVudCA9IFsmXSAoYXV0byBmbikgewotICAgICAgICB1aW50OF90KiBtZW1vcnkgPSByZWludGVy
cHJldF9jYXN0PHVpbnQ4X3QqPihtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmNhY2hlZE1lbW9yeSgp
KTsKLSAgICAgICAgdWludDY0X3Qgc2l6ZUluQnl0ZXMgPSBtX2luc3RhbmNlLT5pbnN0YW5jZSgp
LmNhY2hlZE1lbW9yeVNpemUoKTsKKyAgICAgICAgYXV0byB3YXNtTWVtb3J5ID0gbV9pbnN0YW5j
ZS0+aW5zdGFuY2UoKS5tZW1vcnkoKTsKKyAgICAgICAgdWludDhfdCogbWVtb3J5ID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4od2FzbU1lbW9yeS0+bWVtb3J5KCkpOworICAgICAgICB1aW50
NjRfdCBzaXplSW5CeXRlcyA9IHdhc21NZW1vcnktPnNpemUoKTsKIAogICAgICAgICBmb3IgKGNv
bnN0IFdhc206OlNlZ21lbnQ6OlB0ciYgc2VnbWVudCA6IGRhdGEpIHsKICAgICAgICAgICAgIHVp
bnQzMl90IG9mZnNldCA9IHNlZ21lbnQtPm9mZnNldC5pc0dsb2JhbEltcG9ydCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQppbmRleCBiZWIwMDYwYmFlYTQzOTRhMDUwNGNjZWQyNjdlNjI2MDBhMzk2Yjc2Li4x
MTdkZTNiODMwY2UyOWM3MDM4YWFhNTRmM2E4ZGExZDcyMjdlODM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKQEAgLTE1NTksNiArMTU1OSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hF
QURFUlMKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCiAgICAgd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXJDbGllbnQuaAogICAgIHdvcmtlcnMvV29ya2VyVGhyZWFkLmgKKyAgICB3
b3JrZXJzL1dvcmtlclRocmVhZFR5cGUuaAogICAgIHdvcmtlcnMvV29ya2VyVHlwZS5oCiAKICAg
ICB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFs
aXphdGlvbkNvbnRleHQuY3BwCmluZGV4IDlhYzg4ZWJmZDc3NzhiZDdkMWQzMTJmYzc2MDhmMWVj
OWFhMTFkMzQuLmE2MWNiMDRlNGRiOTU1Nzk1MjU5NDM4NzFhZWZhNDQzNjE1ZTM1YzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lk
IElEQlNlcmlhbGl6YXRpb25Db250ZXh0Ojppbml0aWFsaXplVk0oKQogICAgIEFTU0VSVCghbV9n
bG9iYWxPYmplY3QpOwogICAgIG1fdm0gPSBKU0M6OlZNOjpjcmVhdGUoKTsKICAgICBtX3ZtLT5o
ZWFwLmFjcXVpcmVBY2Nlc3MoKTsKLSAgICBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxk
KG1fdm0uZ2V0KCkpOworICAgIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29ybGQobV92bS5n
ZXQoKSwgV29ya2VyVGhyZWFkVHlwZTo6V29ya2xldCk7CiAKICAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrZXIobV92bS5nZXQoKSk7CiAgICAgbV9nbG9iYWxPYmplY3Quc2V0KCptX3ZtLCBKU0lE
QlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q6OmNyZWF0ZSgqbV92bSwgSlNJREJTZXJpYWxpemF0
aW9uR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIEpTQzo6anNOdWxsKCkpLCBu
b3JtYWxXb3JsZCgqbV92bSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjZTJhYTcwN2FkYWRiNmIzNDdhNDQ0NGE2ZGVlZjJj
ODVkYTczZjQxLi5jMzMyOTgyOTE2ODIzZjdiNjY2MGQxMTYyMWRjYjBhYjQ0MDc0M2VlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC01MDExLDYgKzUwMTEsNyBAQAogCQlFMzk2MjhDMTIzOTU3NDMxMDA2NThFQ0QgLyogTW90aW9u
TWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM5NjI4QzAyMzk1NzQzMDAwNjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGllbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0E3NzY2
NzFEQzg1RDI4MDBCNjkwRDggLyogRE9NSklUSURMQ29udmVydC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNzc2NjUxREM4NUQyMjAwQjY5MEQ4IC8q
IERPTUpJVElETENvbnZlcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFM0E3NzY2ODFEQzg1RDI4MDBCNjkwRDggLyogRE9NSklUSURMVHlwZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNzc2NjYx
REM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFM0FGRDdBRDI1NUY1MEVCMDBFNUUzMEUgLyog
V29ya2VyVGhyZWFkVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTNBRkQ3QUIyNTVGNTBEQzAwRTVFMzBFIC8qIFdvcmtlclRocmVhZFR5cGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0IyRjBF
RDFEN0Y0Q0EzMDBCMEM5RDEgLyogTG9hZGFibGVTY3JpcHQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQjJGMEU3MUQ3RjM1RUMwMEIwQzlEMSAvKiBM
b2FkYWJsZVNjcmlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUUzQjJGMEVFMUQ3RjRDQTkwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdENsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCMkYw
RTgxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlU2NyaXB0Q2xpZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNCMkYwRjAxRDdGNENCNTAw
QjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCMkYwRTQxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRh
YmxlQ2xhc3NpY1NjcmlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0xNjAzOCw2ICsxNjAzOSw3IEBACiAJCUUzQTc3NjY2MURDODVEMjIwMEI2
OTBEOCAvKiBET01KSVRJRExUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERPTUpJVElETFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBRTZDRDEy
MjUyRjI3MDAwQzcwQjUwIC8qIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0FGQTk2NDFEQTZFOTA4MDAyODYxQkQg
LyogSlNOb2RlRE9NSklULmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTTm9kZURPTUpJVC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQUZEN0FC
MjU1RjUwREMwMEU1RTMwRSAvKiBXb3JrZXJUaHJlYWRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdv
cmtlclRocmVhZFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNCMkYwRTMx
RDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0IyRjBFNDFEN0YzNUVDMDBCMEM5RDEgLyogTG9h
ZGFibGVDbGFzc2ljU2NyaXB0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExv
YWRhYmxlQ2xhc3NpY1NjcmlwdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0Iy
RjBFNzFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVTY3JpcHQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTG9hZGFibGVTY3JpcHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE5MDEzLDYgKzE5MDE1LDcgQEAKIAkJCQkyRUE3NjgwMzBGRTcxMjY0MDBBQjlD
OEEgLyogV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmggKi8sCiAJCQkJMkU0MzQ2NDIwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5jcHAgKi8sCiAJCQkJMkU0MzQ2NDMwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlclRocmVhZC5oICovLAorCQkJCUUzQUZEN0FCMjU1RjUwREMwMEU1RTMw
RSAvKiBXb3JrZXJUaHJlYWRUeXBlLmggKi8sCiAJCQkJNTFGMTc0RkMxRjM1ODk4ODAwQzc0OTUw
IC8qIFdvcmtlclR5cGUuaCAqLywKIAkJCQk1MUYxNzRGQTFGMzU4OEQ3MDBDNzQ5NTAgLyogV29y
a2VyVHlwZS5pZGwgKi8sCiAJCQkpOwpAQCAtMzUxMjksNiArMzUxMzIsNyBAQAogCQkJCTJFNDM0
NjU1MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBCOTA1NkY5MEYyNjg1RjMwMDk1RkY2QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5N0FBQkQyRDE0RkEwOUQ1MDA3NDU3QUUgLyogV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzQUZEN0FEMjU1RjUw
RUIwMEU1RTMwRSAvKiBXb3JrZXJUaHJlYWRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRB
MEM2ODFEQjgwN0Q5MDAxN0E5MEIgLyogV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MUYxNzRGRTFGMzU4OTkyMDBDNzQ5NTAgLyogV29ya2VyVHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNEJERUEzMjAyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmtsZXQu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURM
VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKaW5kZXggN2U4NTU5
MDVmOTA5Nzk3N2IzMzVkMzQwNTc2MWQyYWUxNzY3NzYxZi4uYjEwNWEyNGJjNWEwNWRmYmZlZDY2
YTgxNWFjYzMxZTNmOWJmYzEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
SURMVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCkBAIC0x
NTEsNiArMTUxLDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExSZXF1aXJlc0V4
aXN0aW5nQXRvbVN0cmluZ0FkYXB0b3IgOiBJRExTdHJpbmc8QXRvCiAgICAgdXNpbmcgSW5uZXJU
eXBlID0gVDsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExBbGxvd1NoYXJl
ZEFkYXB0b3IgOiBUIHsKKyAgICB1c2luZyBJbm5lclR5cGUgPSBUOworfTsKKwogc3RydWN0IElE
TE9iamVjdCA6IElETFR5cGU8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+IHsKICAgICB1c2lu
ZyBOdWxsYWJsZVR5cGUgPSBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PjsKIApAQCAtMzIzLDQg
KzMyNywxNyBAQCBzdHJ1Y3QgSXNJRExGbG9hdGluZ1BvaW50IDogcHVibGljIHN0ZDo6aW50ZWdy
YWxfY29uc3RhbnQ8Ym9vbCwgV1RGOjpJc0Jhc2VPZlRlbQogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
IHN0cnVjdCBJc0lETFR5cGVkQXJyYXkgOiBwdWJsaWMgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxi
b29sLCBXVEY6OklzQmFzZU9mVGVtcGxhdGU8SURMVHlwZWRBcnJheSwgVD46OnZhbHVlPiB7IH07
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNJRExBcnJheUJ1ZmZlciA6IHB1Ymxp
YyBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHN0ZDo6aXNfYmFzZV9vZjxJRExBcnJheUJ1
ZmZlciwgVD46OnZhbHVlPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNJ
RExBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBz
dGQ6OmlzX2Jhc2Vfb2Y8SURMQXJyYXlCdWZmZXJWaWV3LCBUPjo6dmFsdWU+IHsgfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBJc0lETEFycmF5QnVmZmVyQWxsb3dTaGFyZWQgOiBw
dWJsaWMgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBzdGQ6OmlzX2Jhc2Vfb2Y8SURMQWxs
b3dTaGFyZWRBZGFwdG9yPElETEFycmF5QnVmZmVyPiwgVD46OnZhbHVlPiB7IH07CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNJRExBcnJheUJ1ZmZlclZpZXdBbGxvd1NoYXJlZCA6
IHB1YmxpYyBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHN0ZDo6aXNfYmFzZV9vZjxJRExB
bGxvd1NoYXJlZEFkYXB0b3I8SURMQXJyYXlCdWZmZXJWaWV3PiwgVD46OnZhbHVlPiB7IH07CisK
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvQ29tbW9uVk0uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9u
Vk0uY3BwCmluZGV4IDljZTYzYTBhN2ZjNmExZDYyMzc1OTA1ODk1NTc2MDAyMjQ4MDA4MTQuLmQz
NWJlZDMwZmY0NWRhYmQ2ZDY3MzI0ZDM0YWI0N2ZjM2Y3Y2RkYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9Db21tb25WTS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgSlNDOjpWTSYgY29tbW9u
Vk1TbG93KCkKIAogICAgIHZtLnNldEdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93
KGdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KCkpOwogCi0gICAgSlNWTUNsaWVu
dERhdGE6OmluaXROb3JtYWxXb3JsZCgmdm0pOworICAgIEpTVk1DbGllbnREYXRhOjppbml0Tm9y
bWFsV29ybGQoJnZtLCBXb3JrZXJUaHJlYWRUeXBlOjpNYWluKTsKIAogICAgIHJldHVybiB2bTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydEJ1
ZmZlclNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0QnVm
ZmVyU291cmNlLmgKaW5kZXggODlhNzZiNDVkN2QzZDBkNTJlNTA0YmQ3NTAwZTk4OTE2ZGY0OGFi
NS4uYjZlNDA4MzgzM2QzN2Q0MjBiYjExMGU3MTlhZWFmM2E0MjA3M2M0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0QnVmZmVyU291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0QnVmZmVyU291cmNlLmgK
QEAgLTEwOSw3ICsxMDksOCBAQCBpbmxpbmUgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiB0
b1Vuc2hhcmVkQXJyYXlCdWZmZXJWaWV3KEpTQzo6Vk0mIHZtLCBKU0M6OgogCiBuYW1lc3BhY2Ug
RGV0YWlsIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgQnVmZmVyU291cmNlVHlwZT4KK2VudW0gY2xh
c3MgQnVmZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlIHsgQWxsb3csIERpc2FsbG93
IH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCdWZmZXJTb3VyY2VUeXBlLCBCdWZmZXJTb3VyY2VDb252
ZXJ0ZXJBbGxvd1NoYXJlZE1vZGUgbW9kZT4KIHN0cnVjdCBCdWZmZXJTb3VyY2VDb252ZXJ0ZXIg
ewogICAgIHVzaW5nIFdyYXBwZXJUeXBlID0gdHlwZW5hbWUgQ29udmVydGVyPEJ1ZmZlclNvdXJj
ZVR5cGU+OjpXcmFwcGVyVHlwZTsKICAgICB1c2luZyBSZXR1cm5UeXBlID0gdHlwZW5hbWUgQ29u
dmVydGVyPEJ1ZmZlclNvdXJjZVR5cGU+OjpSZXR1cm5UeXBlOwpAQCAtMTE5LDcgKzEyMCwxMSBA
QCBzdHJ1Y3QgQnVmZmVyU291cmNlQ29udmVydGVyIHsKICAgICB7CiAgICAgICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAgICAgUmV0dXJuVHlwZSBvYmplY3QgPSBX
cmFwcGVyVHlwZTo6dG9XcmFwcGVkKHZtLCB2YWx1ZSk7CisgICAgICAgIFJldHVyblR5cGUgb2Jq
ZWN0IHsgfTsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEJ1ZmZlclNvdXJjZUNvbnZl
cnRlckFsbG93U2hhcmVkTW9kZTo6QWxsb3cpCisgICAgICAgICAgICBvYmplY3QgPSBXcmFwcGVy
VHlwZTo6dG9XcmFwcGVkQWxsb3dTaGFyZWQodm0sIHZhbHVlKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgb2JqZWN0ID0gV3JhcHBlclR5cGU6OnRvV3JhcHBlZCh2bSwgdmFsdWUpOwogICAg
ICAgICBpZiAoVU5MSUtFTFkoIW9iamVjdCkpCiAgICAgICAgICAgICBleGNlcHRpb25UaHJvd2Vy
KGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG9iamVjdDsKQEAg
LTEzNSw3ICsxNDAsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURMQXJyYXlCdWZm
ZXI+IDogRGVmYXVsdENvbnZlcnRlcjxJRExBcnJheUJ1ZmZlcj4gewogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEV4Y2VwdGlvblRocm93ZXIgPSBEZWZhdWx0RXhjZXB0aW9uVGhyb3dlcj4KICAgICBz
dGF0aWMgUmV0dXJuVHlwZSBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlv
blRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkpCiAgICAgewotICAgICAgICByZXR1cm4gRGV0
YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMQXJyYXlCdWZmZXI+Ojpjb252ZXJ0KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhj
ZXB0aW9uVGhyb3dlcikpOworICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252
ZXJ0ZXI8SURMQXJyYXlCdWZmZXIsIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyQWxsb3dT
aGFyZWRNb2RlOjpEaXNhbGxvdz46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUs
IHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7CiAgICAg
fQogfTsKIApAQCAtMTU3LDcgKzE2Miw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJ
RExEYXRhVmlldz4gOiBEZWZhdWx0Q29udmVydGVyPElETERhdGFWaWV3PiB7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgog
ICAgIHN0YXRpYyBSZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhj
ZXB0aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExEYXRhVmlldz46OmNvbnZlcnQobGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihl
eGNlcHRpb25UaHJvd2VyKSk7CisgICAgICAgIHJldHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNv
bnZlcnRlcjxJRExEYXRhVmlldywgRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXJBbGxvd1No
YXJlZE1vZGU6OkRpc2FsbG93Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwg
c3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKICAgICB9
CiB9OwogCkBAIC0xNzksNyArMTg0LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElE
TEludDhBcnJheT4gOiBEZWZhdWx0Q29udmVydGVyPElETEludDhBcnJheT4gewogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEV4Y2VwdGlvblRocm93ZXIgPSBEZWZhdWx0RXhjZXB0aW9uVGhyb3dlcj4K
ICAgICBzdGF0aWMgUmV0dXJuVHlwZSBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9uVGhyb3dlciYmIGV4
Y2VwdGlvblRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkpCiAgICAgewotICAgICAgICByZXR1
cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMSW50OEFycmF5Pjo6Y29udmVydChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+
KGV4Y2VwdGlvblRocm93ZXIpKTsKKyAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNl
Q29udmVydGVyPElETEludDhBcnJheSwgRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXJBbGxv
d1NoYXJlZE1vZGU6OkRpc2FsbG93Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKICAg
ICB9CiB9OwogCkBAIC0yMDEsNyArMjA2LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVy
PElETEludDE2QXJyYXk+IDogRGVmYXVsdENvbnZlcnRlcjxJRExJbnQxNkFycmF5PiB7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJv
d2VyPgogICAgIHN0YXRpYyBSZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2Vy
JiYgZXhjZXB0aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExJbnQxNkFycmF5Pjo6Y29u
dmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRo
cm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKKyAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVy
U291cmNlQ29udmVydGVyPElETEludDE2QXJyYXksIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVy
dGVyQWxsb3dTaGFyZWRNb2RlOjpEaXNhbGxvdz46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2Vy
KSk7CiAgICAgfQogfTsKIApAQCAtMjIzLDcgKzIyOCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENv
bnZlcnRlcjxJRExJbnQzMkFycmF5PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMSW50MzJBcnJheT4g
ewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlvblRocm93ZXIgPSBEZWZhdWx0RXhjZXB0
aW9uVGhyb3dlcj4KICAgICBzdGF0aWMgUmV0dXJuVHlwZSBjb252ZXJ0KEpTQzo6SlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9u
VGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkpCiAgICAgewot
ICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMSW50MzJBcnJh
eT46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNl
cHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7CisgICAgICAgIHJldHVybiBEZXRhaWw6
OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExJbnQzMkFycmF5LCBEZXRhaWw6OkJ1ZmZlclNvdXJj
ZUNvbnZlcnRlckFsbG93U2hhcmVkTW9kZTo6RGlzYWxsb3c+Ojpjb252ZXJ0KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9u
VGhyb3dlcikpOwogICAgIH0KIH07CiAKQEAgLTI0NSw3ICsyNTAsNyBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBDb252ZXJ0ZXI8SURMVWludDhBcnJheT4gOiBEZWZhdWx0Q29udmVydGVyPElETFVpbnQ4
QXJyYXk+IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJvd2VyID0gRGVmYXVs
dEV4Y2VwdGlvblRocm93ZXI+CiAgICAgc3RhdGljIFJldHVyblR5cGUgY29udmVydChKU0M6OkpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIEV4
Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigpKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPElETFVp
bnQ4QXJyYXk+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndh
cmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOworICAgICAgICByZXR1cm4g
RGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMVWludDhBcnJheSwgRGV0YWlsOjpCdWZm
ZXJTb3VyY2VDb252ZXJ0ZXJBbGxvd1NoYXJlZE1vZGU6OkRpc2FsbG93Pjo6Y29udmVydChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4
Y2VwdGlvblRocm93ZXIpKTsKICAgICB9CiB9OwogCkBAIC0yNzMsNyArMjc4LDcgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETFVpbnQxNkFycmF5PiA6IERlZmF1bHRDb252ZXJ0ZXI8
SURMVWludDE2QXJyYXk+IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJvd2Vy
ID0gRGVmYXVsdEV4Y2VwdGlvblRocm93ZXI+CiAgICAgc3RhdGljIFJldHVyblR5cGUgY29udmVy
dChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
dmFsdWUsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhy
b3dlcigpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVy
dGVyPElETFVpbnQxNkFycmF5Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwg
c3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKKyAgICAg
ICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPElETFVpbnQxNkFycmF5LCBE
ZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlckFsbG93U2hhcmVkTW9kZTo6RGlzYWxsb3c+Ojpj
b252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9u
VGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOwogICAgIH0KIH07CiAKQEAgLTI5NSw3ICszMDAs
NyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURMVWludDMyQXJyYXk+IDogRGVmYXVs
dENvbnZlcnRlcjxJRExVaW50MzJBcnJheT4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2Vw
dGlvblRocm93ZXIgPSBEZWZhdWx0RXhjZXB0aW9uVGhyb3dlcj4KICAgICBzdGF0aWMgUmV0dXJu
VHlwZSBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIgPSBF
eGNlcHRpb25UaHJvd2VyKCkpCiAgICAgewotICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJT
b3VyY2VDb252ZXJ0ZXI8SURMVWludDMyQXJyYXk+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dl
cikpOworICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMVWlu
dDMyQXJyYXksIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlOjpE
aXNhbGxvdz46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2Fy
ZDxFeGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7CiAgICAgfQogfTsKIApAQCAt
MzE3LDcgKzMyMiw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExVaW50OENsYW1w
ZWRBcnJheT4gOiBEZWZhdWx0Q29udmVydGVyPElETFVpbnQ4Q2xhCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgogICAgIHN0
YXRpYyBSZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0aW9u
VGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBEZXRh
aWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExVaW50OENsYW1wZWRBcnJheT46OmNvbnZlcnQo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2Vy
PihleGNlcHRpb25UaHJvd2VyKSk7CisgICAgICAgIHJldHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJj
ZUNvbnZlcnRlcjxJRExVaW50OENsYW1wZWRBcnJheSwgRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252
ZXJ0ZXJBbGxvd1NoYXJlZE1vZGU6OkRpc2FsbG93Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93
ZXIpKTsKICAgICB9CiB9OwogCkBAIC0zMzksNyArMzQ0LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
Q29udmVydGVyPElETEZsb2F0MzJBcnJheT4gOiBEZWZhdWx0Q29udmVydGVyPElETEZsb2F0MzJB
cnJheT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJvd2VyID0gRGVmYXVsdEV4
Y2VwdGlvblRocm93ZXI+CiAgICAgc3RhdGljIFJldHVyblR5cGUgY29udmVydChKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIEV4Y2Vw
dGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigpKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPElETEZsb2F0
MzJBcnJheT46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2Fy
ZDxFeGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7CisgICAgICAgIHJldHVybiBE
ZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExGbG9hdDMyQXJyYXksIERldGFpbDo6QnVm
ZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlOjpEaXNhbGxvdz46OmNvbnZlcnQobGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihl
eGNlcHRpb25UaHJvd2VyKSk7CiAgICAgfQogfTsKIApAQCAtMzYxLDcgKzM2Niw3IEBAIHRlbXBs
YXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExGbG9hdDY0QXJyYXk+IDogRGVmYXVsdENvbnZlcnRl
cjxJRExGbG9hdDY0QXJyYXk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dl
ciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgogICAgIHN0YXRpYyBSZXR1cm5UeXBlIGNvbnZl
cnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRo
cm93ZXIoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZl
cnRlcjxJRExGbG9hdDY0QXJyYXk+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
LCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOworICAg
ICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMRmxvYXQ2NEFycmF5
LCBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlckFsbG93U2hhcmVkTW9kZTo6RGlzYWxsb3c+
Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0
aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOwogICAgIH0KIH07CiAKQEAgLTM4Myw3ICsz
ODgsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURMQXJyYXlCdWZmZXJWaWV3PiA6
IERlZmF1bHRDb252ZXJ0ZXI8SURMQXJyYXlCdWZmZQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4
Y2VwdGlvblRocm93ZXIgPSBEZWZhdWx0RXhjZXB0aW9uVGhyb3dlcj4KICAgICBzdGF0aWMgUmV0
dXJuVHlwZSBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIg
PSBFeGNlcHRpb25UaHJvd2VyKCkpCiAgICAgewotICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZm
ZXJTb3VyY2VDb252ZXJ0ZXI8SURMQXJyYXlCdWZmZXJWaWV3Pjo6Y29udmVydChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlv
blRocm93ZXIpKTsKKyAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVy
PElETEFycmF5QnVmZmVyVmlldywgRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXJBbGxvd1No
YXJlZE1vZGU6OkRpc2FsbG93Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwg
c3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKICAgICB9
CiB9OwogCkBAIC0zOTgsNCArNDAzLDE3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEpTQ29udmVydGVy
PElETEFycmF5QnVmZmVyVmlldz4gewogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
CitzdHJ1Y3QgQ29udmVydGVyPElETEFsbG93U2hhcmVkQWRhcHRvcjxUPj4gOiBEZWZhdWx0Q29u
dmVydGVyPFQ+IHsKKyAgICB1c2luZyBDb252ZXJ0ZXJUeXBlID0gQ29udmVydGVyPFQ+OworICAg
IHVzaW5nIFdyYXBwZXJUeXBlID0gdHlwZW5hbWUgQ29udmVydGVyVHlwZTo6V3JhcHBlclR5cGU7
CisgICAgdXNpbmcgUmV0dXJuVHlwZSA9IHR5cGVuYW1lIENvbnZlcnRlclR5cGU6OlJldHVyblR5
cGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJvd2VyID0gRGVmYXVsdEV4
Y2VwdGlvblRocm93ZXI+CisgICAgc3RhdGljIFJldHVyblR5cGUgY29udmVydChKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIEV4Y2Vw
dGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigpKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPFQsIERldGFp
bDo6QnVmZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlOjpBbGxvdz46OmNvbnZlcnQo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2Vy
PihleGNlcHRpb25UaHJvd2VyKSk7CisgICAgfQorfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VW5p
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFVuaW9uLmgKaW5k
ZXggMWY4MjQzM2Y5MmM3MWExMWFiZTc3ODY5OTE0MzZiN2I4M2Q1NWI0Yi4uZjhjNzAxYmUxOTA2
MGM0OWQ2N2E1ZjAwZmJmOWE2NzI4NWVmZWZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Db252ZXJ0VW5pb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUNvbnZlcnRVbmlvbi5oCkBAIC0yMjUsOSArMjI1LDkgQEAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gVD4gc3RydWN0IENvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4gOiBEZWZhdWx0
Q29udmVydGVyPElETFUKICAgICAgICAgLy8gNy4gSWYgVHlwZShWKSBpcyBPYmplY3QgYW5kIFYg
aGFzIGFuIFtbQXJyYXlCdWZmZXJEYXRhXV0gaW50ZXJuYWwgc2xvdCwgdGhlbjoKICAgICAgICAg
Ly8gICAgIDEuIElmIHR5cGVzIGluY2x1ZGVzIEFycmF5QnVmZmVyLCB0aGVuIHJldHVybiB0aGUg
cmVzdWx0IG9mIGNvbnZlcnRpbmcgViB0byBBcnJheUJ1ZmZlci4KICAgICAgICAgLy8gICAgIDIu
IElmIHR5cGVzIGluY2x1ZGVzIG9iamVjdCwgdGhlbiByZXR1cm4gdGhlIElETCB2YWx1ZSB0aGF0
IGlzIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgVi4KLSAgICAgICAgY29uc3RleHByIGJvb2wg
aGFzQXJyYXlCdWZmZXJUeXBlID0gYnJpZ2FuZDo6YW55PFR5cGVMaXN0LCBzdGQ6OmlzX3NhbWU8
SURMQXJyYXlCdWZmZXIsIGJyaWdhbmQ6Ol8xPj46OnZhbHVlOworICAgICAgICBjb25zdGV4cHIg
Ym9vbCBoYXNBcnJheUJ1ZmZlclR5cGUgPSBicmlnYW5kOjphbnk8VHlwZUxpc3QsIElzSURMQXJy
YXlCdWZmZXI8YnJpZ2FuZDo6XzE+Pjo6dmFsdWU7CiAgICAgICAgIGlmIChoYXNBcnJheUJ1ZmZl
clR5cGUgfHwgaGFzT2JqZWN0VHlwZSkgewotICAgICAgICAgICAgYXV0byBhcnJheUJ1ZmZlciA9
IEpTQzo6SlNBcnJheUJ1ZmZlcjo6dG9XcmFwcGVkKHZtLCB2YWx1ZSk7CisgICAgICAgICAgICBh
dXRvIGFycmF5QnVmZmVyID0gKGJyaWdhbmQ6OmFueTxUeXBlTGlzdCwgSXNJRExBcnJheUJ1ZmZl
ckFsbG93U2hhcmVkPGJyaWdhbmQ6Ol8xPj46OnZhbHVlKSA/IEpTQzo6SlNBcnJheUJ1ZmZlcjo6
dG9XcmFwcGVkQWxsb3dTaGFyZWQodm0sIHZhbHVlKSA6IEpTQzo6SlNBcnJheUJ1ZmZlcjo6dG9X
cmFwcGVkKHZtLCB2YWx1ZSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlCdWZmZXIpIHsKICAgICAg
ICAgICAgICAgICBpZiAoaGFzQXJyYXlCdWZmZXJUeXBlKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gQ29uZGl0aW9uYWxSZXR1cm5lcjxSZXR1cm5UeXBlLCBoYXNBcnJheUJ1ZmZlclR5cGU+
OjpnZXQoV1RGTW92ZShhcnJheUJ1ZmZlcikpLnZhbHVlKCk7CkBAIC0yMzUsOSArMjM1LDkgQEAg
dGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4gc3RydWN0IENvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4g
OiBEZWZhdWx0Q29udmVydGVyPElETFUKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAg
ICAgIGNvbnN0ZXhwciBib29sIGhhc0FycmF5QnVmZmVyVmlld1R5cGUgPSBicmlnYW5kOjphbnk8
VHlwZUxpc3QsIHN0ZDo6aXNfc2FtZTxJRExBcnJheUJ1ZmZlclZpZXcsIGJyaWdhbmQ6Ol8xPj46
OnZhbHVlOworICAgICAgICBjb25zdGV4cHIgYm9vbCBoYXNBcnJheUJ1ZmZlclZpZXdUeXBlID0g
YnJpZ2FuZDo6YW55PFR5cGVMaXN0LCBJc0lETEFycmF5QnVmZmVyVmlldzxicmlnYW5kOjpfMT4+
Ojp2YWx1ZTsKICAgICAgICAgaWYgKGhhc0FycmF5QnVmZmVyVmlld1R5cGUgfHwgaGFzT2JqZWN0
VHlwZSkgewotICAgICAgICAgICAgYXV0byBhcnJheUJ1ZmZlclZpZXcgPSBKU0M6OkpTQXJyYXlC
dWZmZXJWaWV3Ojp0b1dyYXBwZWQodm0sIHZhbHVlKTsKKyAgICAgICAgICAgIGF1dG8gYXJyYXlC
dWZmZXJWaWV3ID0gKGJyaWdhbmQ6OmFueTxUeXBlTGlzdCwgSXNJRExBcnJheUJ1ZmZlclZpZXdB
bGxvd1NoYXJlZDxicmlnYW5kOjpfMT4+Ojp2YWx1ZSkgPyBKU0M6OkpTQXJyYXlCdWZmZXJWaWV3
Ojp0b1dyYXBwZWRBbGxvd1NoYXJlZCh2bSwgdmFsdWUpIDogSlNDOjpKU0FycmF5QnVmZmVyVmll
dzo6dG9XcmFwcGVkKHZtLCB2YWx1ZSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlCdWZmZXJWaWV3
KSB7CiAgICAgICAgICAgICAgICAgaWYgKGhhc0FycmF5QnVmZmVyVmlld1R5cGUpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBDb25kaXRpb25hbFJldHVybmVyPFJldHVyblR5cGUsIGhhc0Fy
cmF5QnVmZmVyVmlld1R5cGU+OjpnZXQoV1RGTW92ZShhcnJheUJ1ZmZlclZpZXcpKS52YWx1ZSgp
OwpAQCAtNDA1LDQgKzQwNSwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPiBzdHJ1Y3QgSlND
b252ZXJ0ZXI8SURMVW5pb248VC4uLj4+IHsKICAgICB9CiB9OwogCisvLyBCdWZmZXJTb3VyY2Ug
c3BlY2lhbGl6YXRpb24uIEluIFdlYktpdCwgQnVmZmVyU291cmNlIGlzIGRlZmluZWQgYXMgSURM
VW5pb248SURMQXJyYXlCdWZmZXJWaWV3LCBJRExBcnJheUJ1ZmZlcj4gYXMgYSBoYWNrLCBhbmQg
aXQgaXMgbm90IGNvbXBhdGlibGUgdG8KKy8vIGFubm90YXRpb24gZGVzY3JpYmVkIGluIFdlYklE
TC4KK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExBbGxvd1NoYXJlZEFkYXB0b3I8SURM
VW5pb248SURMQXJyYXlCdWZmZXJWaWV3LCBJRExBcnJheUJ1ZmZlcj4+PiA6IERlZmF1bHRDb252
ZXJ0ZXI8SURMVW5pb248SURMQXJyYXlCdWZmZXJWaWV3LCBJRExBcnJheUJ1ZmZlcj4+IHsKKyAg
ICBzdGF0aWMgYXV0byBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkgLT4gZGVjbHR5cGUoYXV0bykKKyAgICB7CisgICAg
ICAgIHJldHVybiBDb252ZXJ0ZXI8SURMVW5pb248SURMQWxsb3dTaGFyZWRBZGFwdG9yPElETEFy
cmF5QnVmZmVyVmlldz4sIElETEFsbG93U2hhcmVkQWRhcHRvcjxJRExBcnJheUJ1ZmZlcj4+Pjo6
Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgfQorfTsKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggMmQ5OWJlNjQxM2MzMGMxNDA4ZjUzNmJjMThh
MjFlYzg0MWE5Nzc2My4uN2JiOGE2ZDlkMzJjZmRkMDZhNTAzYWNmOTk5M2ZiMzIyZWVjNjliOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCkBAIC03NSw2ICs3NSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNT
ZXQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1NldEl0ZXJhdG9yLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNUeXBlZEFycmF5cy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTV2ViQXNzZW1ibHlNZW1vcnkuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1dl
YkFzc2VtYmx5TW9kdWxlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3Ry
dWN0b3IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgpA
QCAtMTgyLDYgKzE4Myw5IEBAIGVudW0gU2VyaWFsaXphdGlvblRhZyB7CiAjZW5kaWYKICAgICBC
aWdJbnRUYWcgPSA0NywKICAgICBCaWdJbnRPYmplY3RUYWcgPSA0OCwKKyNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCisgICAgV2FzbU1lbW9yeVRhZyA9IDQ5LAorI2VuZGlmCiAgICAgRXJyb3JUYWcg
PSAyNTUKIH07CiAKQEAgLTM1Nyw3ICszNjEsNiBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
aW5nRGF0YUlzOEJpdEZsYWcgPSAweDgwMDAwMDAwOwogICogICAgfCBNZXNzYWdlUG9ydFJlZmVy
ZW5jZVRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAgICB8IEFycmF5QnVmZmVyCiAgKiAgICB8IEFy
cmF5QnVmZmVyVmlld1RhZyBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgPGJ5dGVPZmZzZXQ6dWludDMy
X3Q+IDxieXRlTGVuZ3RoOnVpbnQzMl90PiAoQXJyYXlCdWZmZXIgfCBPYmplY3RSZWZlcmVuY2Up
Ci0gKiAgICB8IEFycmF5QnVmZmVyVHJhbnNmZXJUYWcgPHZhbHVlOnVpbnQzMl90PgogICogICAg
fCBDcnlwdG9LZXlUYWcgPHdyYXBwZWRLZXlMZW5ndGg6dWludDMyX3Q+IDxmYWN0b3I6Ynl0ZXt3
cmFwcGVkS2V5TGVuZ3RofT4KICAqICAgIHwgRE9NUG9pbnQKICAqICAgIHwgRE9NUmVjdApAQCAt
MzY3LDYgKzM3MCw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJpbmdEYXRhSXM4Qml0Rmxh
ZyA9IDB4ODAwMDAwMDA7CiAgKiAgICB8IFJUQ0NlcnRpZmljYXRlVGFnCiAgKiAgICB8IEltYWdl
Qml0bWFwVGFnIDxvcmlnaW5DbGVhbjp1aW50OF90PiA8bG9naWNhbFdpZHRoOmludDMyX3Q+IDxs
b2dpY2FsSGVpZ2h0OmludDMyX3Q+IDxyZXNvbHV0aW9uU2NhbGU6ZG91YmxlPiA8Ynl0ZUxlbmd0
aDp1aW50MzJfdD4oPGltYWdlQnl0ZURhdGE6dWludDhfdD4pCiAgKiAgICB8IE9mZnNjcmVlbkNh
bnZhc1RyYW5zZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KKyAqICAgIHwgV2FzbU1lbW9yeVRhZyA8
dmFsdWU6dWludDMyX3Q+CiAgKgogICogSW5zaWRlIGNlcnRpZmljYXRlLCBkYXRhIGlzIHNlcmlh
bGl6ZWQgaW4gdGhpcyBmb3JtYXQgYXMgcGVyIHNwZWM6CiAgKgpAQCAtNDE5LDYgKzQyMyw4IEBA
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJpbmdEYXRhSXM4Qml0RmxhZyA9IDB4ODAwMDAwMDA7
CiAgKgogICogQXJyYXlCdWZmZXIgOi0KICAqICAgIEFycmF5QnVmZmVyVGFnIDxsZW5ndGg6dWlu
dDMyX3Q+IDxjb250ZW50czpieXRle2xlbmd0aH0+CisgKiAgICBBcnJheUJ1ZmZlclRyYW5zZmVy
VGFnIDx2YWx1ZTp1aW50MzJfdD4KKyAqICAgIFNoYXJlZEFycmF5QnVmZmVyVGFnIDx2YWx1ZTp1
aW50MzJfdD4KICAqCiAgKiBDcnlwdG9LZXlITUFDIDotCiAgKiAgICA8a2V5U2l6ZTp1aW50MzJf
dD4gPGtleURhdGE6Ynl0ZXtrZXlTaXplfT4gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZyAv
LyBBbGdvcml0aG0gdGFnIGlubmVyIGhhc2ggZnVuY3Rpb24uCkBAIC01NzYsNiArNTgyLDcgQEAg
Y2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICNlbmRpZgogI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKICAgICAgICAgICAgIFdhc21Nb2R1bGVBcnJheSYgd2FzbU1vZHVsZXMsCisg
ICAgICAgICAgICBXYXNtTWVtb3J5SGFuZGxlQXJyYXkmIHdhc21NZW1vcnlIYW5kbGVzLAogI2Vu
ZGlmCiAgICAgICAgIFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgVmVjdG9yPHVpbnQ4X3Q+JiBv
dXQsIFNlcmlhbGl6YXRpb25Db250ZXh0IGNvbnRleHQsIEFycmF5QnVmZmVyQ29udGVudHNBcnJh
eSYgc2hhcmVkQnVmZmVycykKICAgICB7CkBAIC01ODUsNiArNTkyLDcgQEAgY2xhc3MgQ2xvbmVT
ZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICAgICAgICAgICAgIHdhc21Nb2R1bGVzLAorICAgICAgICAgICAgd2FzbU1lbW9yeUhhbmRsZXMs
CiAjZW5kaWYKICAgICAgICAgICAgIGJsb2JVUkxzLCBvdXQsIGNvbnRleHQsIHNoYXJlZEJ1ZmZl
cnMpOwogICAgICAgICByZXR1cm4gc2VyaWFsaXplci5zZXJpYWxpemUodmFsdWUpOwpAQCAtNjE1
LDYgKzYyMyw3IEBAIGNsYXNzIENsb25lU2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICBXYXNtTW9kdWxlQXJyYXkmIHdh
c21Nb2R1bGVzLAorICAgICAgICAgICAgV2FzbU1lbW9yeUhhbmRsZUFycmF5JiB3YXNtTWVtb3J5
SGFuZGxlcywKICNlbmRpZgogICAgICAgICBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIFZlY3Rv
cjx1aW50OF90PiYgb3V0LCBTZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0LCBBcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXkmIHNoYXJlZEJ1ZmZlcnMpCiAgICAgICAgIDogQ2xvbmVCYXNlKGxleGlj
YWxHbG9iYWxPYmplY3QpCkBAIC02MjUsNiArNjM0LDcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVy
IDogQ2xvbmVCYXNlIHsKICAgICAgICAgLCBtX3NoYXJlZEJ1ZmZlcnMoc2hhcmVkQnVmZmVycykK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgbV93YXNtTW9kdWxlcyh3YXNtTW9k
dWxlcykKKyAgICAgICAgLCBtX3dhc21NZW1vcnlIYW5kbGVzKHdhc21NZW1vcnlIYW5kbGVzKQog
I2VuZGlmCiAgICAgewogICAgICAgICB3cml0ZShDdXJyZW50VmVyc2lvbik7CkBAIC0xMjMwLDYg
KzEyNDAsNyBAQCBjbGFzcyBDbG9uZVNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAgICAgICAg
ICAgICAgIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IGR1bW15QXJyYXlCdWZmZXJz
OwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgICAgICAgICBXYXNtTW9kdWxlQXJy
YXkgZHVtbXlNb2R1bGVzOworICAgICAgICAgICAgICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSBk
dW1teU1lbW9yeUhhbmRsZXM7CiAjZW5kaWYKICAgICAgICAgICAgICAgICBBcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXkgZHVtbXlTaGFyZWRCdWZmZXJzOwogICAgICAgICAgICAgICAgIENsb25lU2Vy
aWFsaXplciByYXdLZXlTZXJpYWxpemVyKG1fbGV4aWNhbEdsb2JhbE9iamVjdCwgZHVtbXlNZXNz
YWdlUG9ydHMsIGR1bW15QXJyYXlCdWZmZXJzLCB7IH0sCkBAIC0xMjM4LDYgKzEyNDksNyBAQCBj
bGFzcyBDbG9uZVNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogI2VuZGlmCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgICAgICAgICAgICAgICAgICBkdW1teU1vZHVsZXMsCisgICAgICAgICAg
ICAgICAgICAgIGR1bW15TWVtb3J5SGFuZGxlcywKICNlbmRpZgogICAgICAgICAgICAgICAgICAg
ICBkdW1teUJsb2JVUkxzLCBzZXJpYWxpemVkS2V5LCBTZXJpYWxpemF0aW9uQ29udGV4dDo6RGVm
YXVsdCwgZHVtbXlTaGFyZWRCdWZmZXJzKTsKICAgICAgICAgICAgICAgICByYXdLZXlTZXJpYWxp
emVyLndyaXRlKGtleSk7CkBAIC0xMjc0LDYgKzEyODYsMjEgQEAgY2xhc3MgQ2xvbmVTZXJpYWxp
emVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgICAgICAgICB3cml0ZShpbmRleCk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoSlNX
ZWJBc3NlbWJseU1lbW9yeSogbWVtb3J5ID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TWVt
b3J5Kj4odm0sIG9iaikpIHsKKyAgICAgICAgICAgICAgICBpZiAobWVtb3J5LT5tZW1vcnkoKS5z
aGFyaW5nTW9kZSgpICE9IEpTQzo6V2FzbTo6TWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZCkgewor
ICAgICAgICAgICAgICAgICAgICBjb2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkRhdGFD
bG9uZUVycm9yOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1fY29udGV4dCAhPSBTZXJpYWxpemF0aW9uQ29u
dGV4dDo6V29ya2VyUG9zdE1lc3NhZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgY29kZSA9IFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlOjpEYXRhQ2xvbmVFcnJvcjsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHVpbnQz
Ml90IGluZGV4ID0gbV93YXNtTWVtb3J5SGFuZGxlcy5zaXplKCk7CisgICAgICAgICAgICAgICAg
bV93YXNtTWVtb3J5SGFuZGxlcy5hcHBlbmQobWFrZVJlZihtZW1vcnktPm1lbW9yeSgpLmhhbmRs
ZSgpKSk7CisgICAgICAgICAgICAgICAgd3JpdGUoV2FzbU1lbW9yeVRhZyk7CisgICAgICAgICAg
ICAgICAgd3JpdGUoaW5kZXgpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgfQogI2VuZGlmCiAgICAgICAgICAgICBpZiAob2JqLT5pbmhlcml0czxKU0RPTVBvaW50
UmVhZE9ubHk+KHZtKSkgewogICAgICAgICAgICAgICAgIGR1bXBET01Qb2ludChvYmopOwpAQCAt
MTY1OCw2ICsxNjg1LDcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAg
ICBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkmIG1fc2hhcmVkQnVmZmVyczsKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAgICAgV2FzbU1vZHVsZUFycmF5JiBtX3dhc21Nb2R1bGVzOworICAgIFdh
c21NZW1vcnlIYW5kbGVBcnJheSYgbV93YXNtTWVtb3J5SGFuZGxlczsKICNlbmRpZgogfTsKIApA
QCAtMTkzNyw2ICsxOTY1LDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2Ug
ewogICAgICAgICAsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogYXJyYXlCdWZmZXJDb250ZW50
c0FycmF5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGJsb2JVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiBibG9iRmlsZVBhdGhzLCBBcnJheUJ1
ZmZlckNvbnRlbnRzQXJyYXkqIHNoYXJlZEJ1ZmZlcnMKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
CiAgICAgICAgICwgV2FzbU1vZHVsZUFycmF5KiB3YXNtTW9kdWxlcworICAgICAgICAsIFdhc21N
ZW1vcnlIYW5kbGVBcnJheSogd2FzbU1lbW9yeUhhbmRsZXMKICNlbmRpZgogICAgICAgICApCiAg
ICAgewpAQCAtMTk0OCw2ICsxOTc3LDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9u
ZUJhc2UgewogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAgLCB3
YXNtTW9kdWxlcworICAgICAgICAgICAgLCB3YXNtTWVtb3J5SGFuZGxlcwogI2VuZGlmCiAgICAg
ICAgICAgICApOwogICAgICAgICBpZiAoIWRlc2VyaWFsaXplci5pc1ZhbGlkKCkpCkBAIC0yMDAx
LDYgKzIwMzEsNyBAQCBjbGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAjZW5k
aWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgV2FzbU1vZHVsZUFycmF5KiB3
YXNtTW9kdWxlcyA9IG51bGxwdHIKKyAgICAgICAgLCBXYXNtTWVtb3J5SGFuZGxlQXJyYXkqIHdh
c21NZW1vcnlIYW5kbGVzID0gbnVsbHB0cgogI2VuZGlmCiAgICAgICAgICkKICAgICAgICAgOiBD
bG9uZUJhc2UobGV4aWNhbEdsb2JhbE9iamVjdCkKQEAgLTIwMjEsNiArMjA1Miw3IEBAIGNsYXNz
IENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKICAgICAgICAgLCBtX3dhc21Nb2R1bGVzKHdhc21Nb2R1bGVzKQorICAgICAgICAs
IG1fd2FzbU1lbW9yeUhhbmRsZXMod2FzbU1lbW9yeUhhbmRsZXMpCiAjZW5kaWYKICAgICB7CiAg
ICAgICAgIGlmICghcmVhZChtX3ZlcnNpb24pKQpAQCAtMjAzMyw2ICsyMDY1LDcgQEAgY2xhc3Mg
Q2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQogICAgICAgICAsIFdhc21Nb2R1bGVBcnJheSogd2FzbU1vZHVsZXMKKyAgICAgICAg
LCBXYXNtTWVtb3J5SGFuZGxlQXJyYXkqIHdhc21NZW1vcnlIYW5kbGVzCiAjZW5kaWYKICAgICAg
ICAgKQogICAgICAgICA6IENsb25lQmFzZShsZXhpY2FsR2xvYmFsT2JqZWN0KQpAQCAtMjA1Niw2
ICsyMDg5LDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogI2VuZGlm
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAsIG1fd2FzbU1vZHVsZXMod2FzbU1v
ZHVsZXMpCisgICAgICAgICwgbV93YXNtTWVtb3J5SGFuZGxlcyh3YXNtTWVtb3J5SGFuZGxlcykK
ICNlbmRpZgogICAgIHsKICAgICAgICAgaWYgKCFyZWFkKG1fdmVyc2lvbikpCkBAIC0zMjk5LDYg
KzMzMzMsMzMgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAgICAg
ICAgICAgbV9nY0J1ZmZlci5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93KHJlc3VsdCk7CiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CisgICAgICAgIGNhc2UgV2FzbU1lbW9y
eVRhZzogeworICAgICAgICAgICAgdWludDMyX3QgaW5kZXg7CisgICAgICAgICAgICBib29sIGlu
ZGV4U3VjY2Vzc2Z1bGx5UmVhZCA9IHJlYWQoaW5kZXgpOworICAgICAgICAgICAgaWYgKCFpbmRl
eFN1Y2Nlc3NmdWxseVJlYWQgfHwgIW1fd2FzbU1lbW9yeUhhbmRsZXMgfHwgaW5kZXggPj0gbV93
YXNtTWVtb3J5SGFuZGxlcy0+c2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgZmFpbCgpOworICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBSZWZQdHI8V2FzbTo6TWVtb3J5SGFuZGxlPiBoYW5kbGUgPSBtX3dhc21NZW1vcnlIYW5kbGVz
LT5hdChpbmRleCk7CisgICAgICAgICAgICBpZiAoIWhhbmRsZSkgeworICAgICAgICAgICAgICAg
IGZhaWwoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYXV0byYgdm0gPSBtX2xleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAg
ICAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiByZXN1bHQgPSBKU0M6OkpTV2ViQXNzZW1ibHlNZW1v
cnk6OnRyeUNyZWF0ZShtX2xleGljYWxHbG9iYWxPYmplY3QsIHZtLCBtX2dsb2JhbE9iamVjdC0+
d2ViQXNzZW1ibHlNZW1vcnlTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAvLyBTaW5jZSB3ZSBh
cmUgY2xvbmluZyBhIEpTV2ViQXNzZW1ibHlNZW1vcnksIGl0J3MgaW1wb3NzaWJsZSBmb3IgdGhh
dAorICAgICAgICAgICAgLy8gbW9kdWxlIHRvIG5vdCBoYXZlIGJlZW4gYSB2YWxpZCBtb2R1bGUu
IFRoZXJlZm9yZSwgY3JlYXRlU3R1YiBzaG91bGQKKyAgICAgICAgICAgIC8vIG5vdCB0cm93Lgor
ICAgICAgICAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgICAgICAg
ICBSZWY8V2FzbTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OmNyZWF0ZShoYW5kbGUu
cmVsZWFzZU5vbk51bGwoKSwKKyAgICAgICAgICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpO
b3RpZnlQcmVzc3VyZSkgeyB2bS5oZWFwLmNvbGxlY3RBc3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1
bGwpOyB9LAorICAgICAgICAgICAgICAgIFsmdm1dIChXYXNtOjpNZW1vcnk6OlN5bmNUcnlUb1Jl
Y2xhaW0pIHsgdm0uaGVhcC5jb2xsZWN0U3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOyB9LAor
ICAgICAgICAgICAgICAgIFsmdm0sIHJlc3VsdF0gKFdhc206Ok1lbW9yeTo6R3Jvd1N1Y2Nlc3Ms
IFdhc206OlBhZ2VDb3VudCBvbGRQYWdlQ291bnQsIFdhc206OlBhZ2VDb3VudCBuZXdQYWdlQ291
bnQpIHsgcmVzdWx0LT5ncm93U3VjY2Vzc0NhbGxiYWNrKHZtLCBvbGRQYWdlQ291bnQsIG5ld1Bh
Z2VDb3VudCk7IH0pOworICAgICAgICAgICAgcmVzdWx0LT5hZG9wdChXVEZNb3ZlKG1lbW9yeSkp
OworICAgICAgICAgICAgbV9nY0J1ZmZlci5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93KHJlc3Vs
dCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CiAjZW5kaWYKICAgICAg
ICAgY2FzZSBBcnJheUJ1ZmZlclRhZzogewogICAgICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBhcnJheUJ1ZmZlcjsKQEAgLTM0MzksNiArMzUwMCw3IEBAIGNsYXNzIENsb25lRGVzZXJpYWxp
emVyIDogQ2xvbmVCYXNlIHsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBX
YXNtTW9kdWxlQXJyYXkqIG1fd2FzbU1vZHVsZXM7CisgICAgV2FzbU1lbW9yeUhhbmRsZUFycmF5
KiBtX3dhc21NZW1vcnlIYW5kbGVzOwogI2VuZGlmCiAKICAgICBTdHJpbmcgYmxvYkZpbGVQYXRo
Rm9yQmxvYlVSTChjb25zdCBTdHJpbmcmIGJsb2JVUkwpCkBAIC0zNjYxLDYgKzM3MjMsNyBAQCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhf
dD4mJiBidWZmZXIsIGNvbnN0IFZlYwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
ICAgICAgICAsIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTW9kdWxlQXJyYXk+IHdhc21Nb2R1bGVzQXJy
YXkKKyAgICAgICAgLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1lbW9yeUhhbmRsZUFycmF5PiB3YXNt
TWVtb3J5SGFuZGxlc0FycmF5CiAjZW5kaWYKICAgICAgICAgKQogICAgIDogbV9kYXRhKFdURk1v
dmUoYnVmZmVyKSkKQEAgLTM2NzIsNiArMzczNSw3IEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgY29uc3QgVmVj
CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgLCBtX3dhc21Nb2R1bGVzQXJy
YXkoV1RGTW92ZSh3YXNtTW9kdWxlc0FycmF5KSkKKyAgICAsIG1fd2FzbU1lbW9yeUhhbmRsZXNB
cnJheShXVEZNb3ZlKHdhc21NZW1vcnlIYW5kbGVzQXJyYXkpKQogI2VuZGlmCiB7CiAgICAgLy8g
U2luY2UgdGhpcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgaXMgbWVhbnQgdG8gYmUgcGFzc2VkIGJl
dHdlZW4gdGhyZWFkcywgaXRzIFN0cmluZyBkYXRhIG1lbWJlcnMKQEAgLTM3MTAsNiArMzc3NCwx
MCBAQCBzaXplX3QgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjb21wdXRlTWVtb3J5Q29zdCgpIGNv
bnN0CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgLy8gV2UgYXJlIG5vdCBzdXBwb3J0
aW5nIFdlYkFzc2VtYmx5IE1vZHVsZSBtZW1vcnkgZXN0aW1hdGlvbiB5ZXQuCisgICAgaWYgKG1f
d2FzbU1lbW9yeUhhbmRsZXNBcnJheSkgeworICAgICAgICBmb3IgKGF1dG8mIGNvbnRlbnQgOiAq
bV93YXNtTWVtb3J5SGFuZGxlc0FycmF5KQorICAgICAgICAgICAgY29zdCArPSBjb250ZW50LT5z
aXplKCk7CisgICAgfQogI2VuZGlmCiAKICAgICBmb3IgKGF1dG8mIHVybHMgOiBtX2Jsb2JVUkxz
KQpAQCAtMzgwMCw2ICszODY4LDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QmIGxleGkKICAgICBWZWN0
b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBkdW1teUFycmF5QnVmZmVyczsKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAgICAgV2FzbU1vZHVsZUFycmF5IGR1bW15TW9kdWxlczsKKyAgICBX
YXNtTWVtb3J5SGFuZGxlQXJyYXkgZHVtbXlNZW1vcnlIYW5kbGVzOwogI2VuZGlmCiAgICAgQXJy
YXlCdWZmZXJDb250ZW50c0FycmF5IGR1bW15U2hhcmVkQnVmZmVyczsKICAgICBhdXRvIGNvZGUg
PSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUs
IGR1bW15TWVzc2FnZVBvcnRzLCBkdW1teUFycmF5QnVmZmVycywgZHVtbXlJbWFnZUJpdG1hcHMs
CkBAIC0zODA4LDExICszODc3LDEzIEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0JiBsZXhpCiAjZW5kaWYK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIGR1bW15TW9kdWxlcywKKyAgICAgICAg
ZHVtbXlNZW1vcnlIYW5kbGVzLAogI2VuZGlmCiAgICAgICAgIGJsb2JVUkxzLCBidWZmZXIsIFNl
cmlhbGl6YXRpb25Db250ZXh0OjpEZWZhdWx0LCBkdW1teVNoYXJlZEJ1ZmZlcnMpOwogCiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZHVtbXlNb2R1bGVz
LmlzRW1wdHkoKSwgIldhc206Ok1vZHVsZSBzZXJpYWxpemF0aW9uIGlzIG9ubHkgYWxsb3dlZCBp
biB0aGUgcG9zdE1lc3NhZ2UgY29udGV4dCIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZHVt
bXlNZW1vcnlIYW5kbGVzLmlzRW1wdHkoKSwgIldhc206Ok1lbW9yeSBzZXJpYWxpemF0aW9uIGlz
IG9ubHkgYWxsb3dlZCBpbiB0aGUgcG9zdE1lc3NhZ2UgY29udGV4dCIpOwogI2VuZGlmCiAKICAg
ICBpZiAodGhyb3dFeGNlcHRpb25zID09IFNlcmlhbGl6YXRpb25FcnJvck1vZGU6OlRocm93aW5n
KQpAQCAtMzg1OSw3ICszOTMwLDcgQEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICNlbmRpZgog
ICAgIGZvciAoYXV0byYgdHJhbnNmZXJhYmxlIDogdHJhbnNmZXJMaXN0KSB7CiAgICAgICAgIGlm
IChhdXRvIGFycmF5QnVmZmVyID0gdG9Qb3NzaWJseVNoYXJlZEFycmF5QnVmZmVyKHZtLCB0cmFu
c2ZlcmFibGUuZ2V0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXJyYXlCdWZmZXItPmlzRGV0YWNo
ZWQoKSkKKyAgICAgICAgICAgIGlmIChhcnJheUJ1ZmZlci0+aXNEZXRhY2hlZCgpIHx8IGFycmF5
QnVmZmVyLT5pc1NoYXJlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBE
YXRhQ2xvbmVFcnJvciB9OwogICAgICAgICAgICAgaWYgKGFycmF5QnVmZmVyLT5pc0xvY2tlZCgp
KSB7CiAgICAgICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwpAQCAtMzkwNCw2ICszOTc1LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICAgICBWZWN0
b3I8U3RyaW5nPiBibG9iVVJMczsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV2FzbU1v
ZHVsZUFycmF5IHdhc21Nb2R1bGVzOworICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSB3YXNtTWVt
b3J5SGFuZGxlczsKICNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXk+IHNoYXJlZEJ1ZmZlcnMgPSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNB
cnJheT4oKTsKICAgICBhdXRvIGNvZGUgPSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSgmbGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzLCBpbWFn
ZUJpdG1hcHMsCkBAIC0zOTExLDcgKzM5ODMsOCBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYgog
ICAgICAgICBvZmZzY3JlZW5DYW52YXNlcywKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKLSAgICAgICAgd2FzbU1vZHVsZXMsIAorICAgICAgICB3YXNtTW9kdWxlcywKKyAgICAgICAg
d2FzbU1lbW9yeUhhbmRsZXMsCiAjZW5kaWYKICAgICAgICAgYmxvYlVSTHMsIGJ1ZmZlciwgY29u
dGV4dCwgKnNoYXJlZEJ1ZmZlcnMpOwogCkBAIC0zOTM2LDYgKzQwMDksNyBAQCBFeGNlcHRpb25P
cjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoSlNHbG9iYWxPYgogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAg
ICAgICAgICwgbWFrZVVuaXF1ZTxXYXNtTW9kdWxlQXJyYXk+KHdhc21Nb2R1bGVzKQorICAgICAg
ICAgICAgICAgICwgY29udGV4dCA9PSBTZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1l
c3NhZ2UgPyBtYWtlVW5pcXVlPFdhc21NZW1vcnlIYW5kbGVBcnJheT4od2FzbU1lbW9yeUhhbmRs
ZXMpIDogbnVsbHB0cgogI2VuZGlmCiAgICAgICAgICAgICAgICAgKSk7CiB9CkBAIC0zOTkzLDYg
KzQwNjcsNyBAQCBKU1ZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsCiAgICAgICAgICwgbV9hcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXkuZ2V0KCksIG1fZGF0YSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMsIG1f
c2hhcmVkQnVmZmVyQ29udGVudHNBcnJheS5nZXQoKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICAgICAgICAgLCBtX3dhc21Nb2R1bGVzQXJyYXkuZ2V0KCkKKyAgICAgICAgLCBtX3dhc21NZW1v
cnlIYW5kbGVzQXJyYXkuZ2V0KCkKICNlbmRpZgogICAgICAgICApOwogICAgIGlmICh0aHJvd0V4
Y2VwdGlvbnMgPT0gU2VyaWFsaXphdGlvbkVycm9yTW9kZTo6VGhyb3dpbmcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGQy
YTBjNGEwYjgzZGFlODkyZGI3OTUwNmVkMzE2ZGViMzhhMTY1MGQuLjBjZGI0MDE4Yzg0N2ZhMDBm
ZWQ3ZjVmYjBmY2JjYTM1Mzk4MzUyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC00MSw2ICs0MSw3IEBAIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IE9wYXF1ZUpTVmFsdWUqIEpTVmFsdWVSZWY7CiAjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIGNsYXNzIE1vZHVsZTsK
K2NsYXNzIE1lbW9yeUhhbmRsZTsKIH0gfQogI2VuZGlmCiAKQEAgLTYxLDYgKzYyLDcgQEAgZW51
bSBjbGFzcyBTZXJpYWxpemF0aW9uQ29udGV4dCB7IERlZmF1bHQsIFdvcmtlclBvc3RNZXNzYWdl
LCBXaW5kb3dQb3N0TWVzc2FnZQogdXNpbmcgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5ID0gVmVj
dG9yPEpTQzo6QXJyYXlCdWZmZXJDb250ZW50cz47CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
dXNpbmcgV2FzbU1vZHVsZUFycmF5ID0gVmVjdG9yPFJlZlB0cjxKU0M6Oldhc206Ok1vZHVsZT4+
OwordXNpbmcgV2FzbU1lbW9yeUhhbmRsZUFycmF5ID0gVmVjdG9yPFJlZlB0cjxKU0M6Oldhc206
Ok1lbW9yeUhhbmRsZT4+OwogI2VuZGlmCiAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9J
REVOVElGSUVSKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CkBAIC0xMjIsNiArMTI0LDcgQEAgY2xh
c3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4KICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAg
ICAgICAgLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1vZHVsZUFycmF5PiA9IG51bGxwdHIKKyAgICAg
ICAgLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1lbW9yeUhhbmRsZUFycmF5PiA9IG51bGxwdHIKICNl
bmRpZgogICAgICAgICApOwogCkBAIC0xMzYsNiArMTM5LDcgQEAgY2xhc3MgU2VyaWFsaXplZFNj
cmlwdFZhbHVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4KICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2FzbU1vZHVsZUFycmF5PiBtX3dhc21Nb2R1bGVzQXJyYXk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFdhc21NZW1vcnlIYW5kbGVBcnJheT4gbV93YXNtTWVtb3J5SGFuZGxlc0FycmF5OwogI2Vu
ZGlmCiAgICAgVmVjdG9yPFN0cmluZz4gbV9ibG9iVVJMczsKICAgICBzaXplX3QgbV9tZW1vcnlD
b3N0IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29y
ZUpTQ2xpZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlND
bGllbnREYXRhLmNwcAppbmRleCAwNzY2MDgzODA3NGUyNmViZjQzMWQ1MWE5YWYzMTAxOWM1OWEw
NzY0Li5hMTQzZjMwNGI0YWM5OTVlN2UxMmE0Yjg4NzE0Y2IzNGU2OGExNmY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcApAQCAt
MTM2LDcgKzEzNiw3IEBAIHZvaWQgSlNWTUNsaWVudERhdGE6OmdldEFsbFdvcmxkcyhWZWN0b3I8
UmVmPERPTVdyYXBwZXJXb3JsZD4+JiB3b3JsZHMpCiAgICAgfQogfQogCi12b2lkIEpTVk1DbGll
bnREYXRhOjppbml0Tm9ybWFsV29ybGQoVk0qIHZtKQordm9pZCBKU1ZNQ2xpZW50RGF0YTo6aW5p
dE5vcm1hbFdvcmxkKFZNKiB2bSwgV29ya2VyVGhyZWFkVHlwZSB0eXBlKQogewogICAgIEpTVk1D
bGllbnREYXRhKiBjbGllbnREYXRhID0gbmV3IEpTVk1DbGllbnREYXRhKCp2bSk7CiAgICAgdm0t
PmNsaWVudERhdGEgPSBjbGllbnREYXRhOyAvLyB+Vk0gZGVsZXRlcyB0aGlzIHBvaW50ZXIuCkBA
IC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKFZN
KiB2bSkKICAgICB2bS0+aGVhcC5hZGRNYXJraW5nQ29uc3RyYWludChtYWtlVW5pcXVlPERPTUdD
T3V0cHV0Q29uc3RyYWludD4oKnZtLCAqY2xpZW50RGF0YSkpOwogCiAgICAgY2xpZW50RGF0YS0+
bV9ub3JtYWxXb3JsZCA9IERPTVdyYXBwZXJXb3JsZDo6Y3JlYXRlKCp2bSwgRE9NV3JhcHBlcldv
cmxkOjpUeXBlOjpOb3JtYWwpOwotICAgIHZtLT5tX3R5cGVkQXJyYXlDb250cm9sbGVyID0gYWRv
cHRSZWYobmV3IFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcigpKTsKKyAgICB2bS0+bV90eXBl
ZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xs
ZXIodHlwZSA9PSBXb3JrZXJUaHJlYWRUeXBlOjpEZWRpY2F0ZWRXb3JrZXIgfHwgdHlwZSA9PSBX
b3JrZXJUaHJlYWRUeXBlOjpXb3JrbGV0KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaApp
bmRleCBiODQ0MGU4NzcwZTQ3MjkxZjdlZTIwNjMxOTllYTA1YzNjNGJiMGMxLi4wZGE1MzMyNzA1
MDgwYzQ5MTI3YzM0NGFhMDIxOTMyNWRjNjZjNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5j
bHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUJ1aWx0aW5OYW1lcy5o
IgogI2luY2x1ZGUgIldlYkNvcmVKU0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFk
VHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCkBAIC00MCw3ICs0MSw3IEBAIGNsYXNzIEpTVk1DbGllbnREYXRhIDogcHVibGljIEpTQzo6
Vk06OkNsaWVudERhdGEgewogCiAgICAgdmlydHVhbCB+SlNWTUNsaWVudERhdGEoKTsKICAgICAK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBpbml0Tm9ybWFsV29ybGQoSlNDOjpWTSop
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGluaXROb3JtYWxXb3JsZChKU0M6OlZN
KiwgV29ya2VyVGhyZWFkVHlwZSk7CiAKICAgICBET01XcmFwcGVyV29ybGQmIG5vcm1hbFdvcmxk
KCkgeyByZXR1cm4gKm1fbm9ybWFsV29ybGQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5jcHAKaW5kZXgg
YzE4ZmE4ZTM2NDhhNDY2YmVhMmMxZjhjODkzZDE1M2YwOTg3NDBlZC4uNmQwMTZjODZhYzc5MWU1
NTBhMjE0MjAwZGUzYmQ5YjNlYjgxNzRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwCkBAIC0zNCw3
ICszNCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYkNvcmVUeXBlZEFycmF5Q29u
dHJvbGxlcjo6V2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyKCkgPSBkZWZhdWx0OworV2ViQ29y
ZVR5cGVkQXJyYXlDb250cm9sbGVyOjpXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIoYm9vbCBh
bGxvd0F0b21pY3NXYWl0KQorICAgIDogbV9hbGxvd0F0b21pY3NXYWl0KGFsbG93QXRvbWljc1dh
aXQpCit7Cit9CiAKIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcjo6fldlYkNvcmVUeXBlZEFy
cmF5Q29udHJvbGxlcigpID0gZGVmYXVsdDsKIApAQCAtNTAsNyArNTMsNyBAQCB2b2lkIFdlYkNv
cmVUeXBlZEFycmF5Q29udHJvbGxlcjo6cmVnaXN0ZXJXcmFwcGVyKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iagogCiBib29sIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcjo6aXNBdG9t
aWNzV2FpdEFsbG93ZWRPbkN1cnJlbnRUaHJlYWQoKQogewotICAgIHJldHVybiAhaXNNYWluVGhy
ZWFkKCk7CisgICAgcmV0dXJuIG1fYWxsb3dBdG9taWNzV2FpdDsKIH0KIAogYm9vbCBXZWJDb3Jl
VHlwZWRBcnJheUNvbnRyb2xsZXI6OkpTQXJyYXlCdWZmZXJPd25lcjo6aXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBKU0M6
OlNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIu
aAppbmRleCBmYWFjMjI2MjIxMmU1MzY4YjA4YWMyOTBmZDgwOWJhNjg0YzJkYzYwLi41MTE5YWQx
ZjNhMmVlZDExMDM4NWY1YTI1NDAzYWEyZjU3YTBiYzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaApAQCAt
MzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkNvcmVUeXBlZEFy
cmF5Q29udHJvbGxlciA6IHB1YmxpYyBKU0M6OlR5cGVkQXJyYXlDb250cm9sbGVyIHsKIHB1Ymxp
YzoKLSAgICBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIoKTsKKyAgICBXZWJDb3JlVHlwZWRB
cnJheUNvbnRyb2xsZXIoYm9vbCBhbGxvd0F0b21pY3NXYWl0KTsKICAgICB2aXJ0dWFsIH5XZWJD
b3JlVHlwZWRBcnJheUNvbnRyb2xsZXIoKTsKICAgICAKICAgICBKU0M6OkpTQXJyYXlCdWZmZXIq
IHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkFy
cmF5QnVmZmVyKikgb3ZlcnJpZGU7CkBAIC01Myw2ICs1Myw3IEBAIGNsYXNzIFdlYkNvcmVUeXBl
ZEFycmF5Q29udHJvbGxlciA6IHB1YmxpYyBKU0M6OlR5cGVkQXJyYXlDb250cm9sbGVyIHsKICAg
ICB9OwogCiAgICAgSlNBcnJheUJ1ZmZlck93bmVyIG1fb3duZXI7CisgICAgYm9vbCBtX2FsbG93
QXRvbWljc1dhaXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGMxOWVi
ZTVlMDc5Y2VkZmM4ZmU0ZGI5NDRiYWQ5NmZhMjU5NTk2YWUuLmU3OWMxZDllNGI2YzFjZjZjOWNj
NjcwM2I5MmY0ZjA0YjE3M2U3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC02OTk5LDYgKzY5OTksNyBAQCBzdWIgSXNB
bm5vdGF0ZWRUeXBlCiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nfTsKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57QXRvbVN0cmluZ307CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nfTsKKyAgICByZXR1cm4g
MSBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57QWxsb3dTaGFyZWR9OwogfQogCiBzdWIg
R2V0QW5ub3RhdGVkSURMVHlwZQpAQCAtNzAxMCw2ICs3MDExLDcgQEAgc3ViIEdldEFubm90YXRl
ZElETFR5cGUKICAgICByZXR1cm4gIklETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvciIg
aWYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nfTsK
ICAgICByZXR1cm4gIklETEF0b21TdHJpbmdBZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57QXRvbVN0cmluZ307CiAgICAgcmV0dXJuICJJRExSZXF1aXJlc0V4aXN0aW5nQXRv
bVN0cmluZ0FkYXB0b3IiIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZXF1aXJlc0V4
aXN0aW5nQXRvbVN0cmluZ307CisgICAgcmV0dXJuICJJRExBbGxvd1NoYXJlZEFkYXB0b3IiIGlm
ICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBbGxvd1NoYXJlZH07CiB9CiAKIHN1YiBHZXRC
YXNlSURMVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9J
RExBdHRyaWJ1dGVzLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0
dHJpYnV0ZXMuanNvbgppbmRleCBjOGVjZmYzODZjMjNjZjYyODRlOWFhZTcwNGM0YzZhZjY4NGIy
MDQ5Li40ZTAzZTlmYTRhYTMxYjRjZThiZWRjY2QwYjhjMDI5ZDQzMmY1OWZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgpAQCAt
MjQsOCArMjQsNyBAQAogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsidHlwZSJdLAog
ICAgICAgICAgICAgInN0YW5kYXJkIjogewogICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6
Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jQWxsb3dTaGFyZWQiCi0gICAgICAgICAgICB9LAot
ICAgICAgICAgICAgInVuc3VwcG9ydGVkIjogdHJ1ZQorICAgICAgICAgICAgfQogICAgICAgICB9
LAogICAgICAgICAiQXBwbGVDb3B5cmlnaHQiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxv
d2VkIjogWyJpbnRlcmZhY2UiLCAiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJdCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmlu
ZGV4IDg0MjVlMzAxMGY2NTM2YmMyMjA0YzE4ZTkwNWEyMzFiMjM5ZDBiN2MuLmY4ODExNTAxNmVm
ODY5Yjg2YzgzY2E3MTg4MmViOGQzODAwNjljMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xNjAyLDYgKzE2
MDIsNyBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbl90cmFpbGluZ19kYXNoX2h5cGhlbgogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbGVhZGluZ191bmRlcnNjb3JlX2Z1
bmN0aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX2RvdWJsZV9sZWFkaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb24pOwogc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdHJh
aWxpbmdfdW5kZXJzY29yZV9mdW5jdGlvbl8pOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fZW5jb2RlSW50byk7CiBzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90b1N0cmlu
Zyk7CiAKIC8vIEF0dHJpYnV0ZXMKQEAgLTIzMzMsNiArMjMzNCw3IEBAIHN0YXRpYyBjb25zdCBI
YXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJs
ZWFkaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2xl
YWRpbmdfdW5kZXJzY29yZV9mdW5jdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJf
ZG91YmxlX2xlYWRpbmdfdW5kZXJzY29yZV9mdW5jdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fZG91YmxlX2xlYWRpbmdfdW5kZXJzY29yZV9mdW5jdGlvbiksIChpbnRwdHJfdCkgKDAp
IH0gfSwKICAgICB7ICJ0cmFpbGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uXyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25fdHJhaWxpbmdfdW5kZXJzY29yZV9mdW5jdGlvbl8pLCAoaW50cHRyX3Qp
ICgwKSB9IH0sCisgICAgeyAiZW5jb2RlSW50byIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
ZW5jb2RlSW50byksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJ0b1N0cmluZyIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25fdG9TdHJpbmcpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAjaWYg
RU5BQkxFKENvbmRpdGlvbjEpCiAgICAgeyAiQ09ORElUSU9OQUxfQ09OU1QiLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2lj
LCB7IChsb25nIGxvbmcpKDApIH0gfSwKQEAgLTk0OTcsNiArOTQ5OSwyNiBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdHJhaWxpbmdfdW5kZXJz
Y29yZV9mdW5jdGlvbgogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90cmFpbGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uX0Jv
ZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidHJhaWxpbmdfdW5kZXJzY29y
ZV9mdW5jdGlvbl8iKTsKIH0KIAorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2VuY29kZUludG9Cb2R5KEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQor
eworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3Vt
ZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgYXV0byBkZXN0aW5h
dGlvbiA9IGNvbnZlcnQ8SURMQWxsb3dTaGFyZWRBZGFwdG9yPElETFVpbnQ4QXJyYXk+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dB
cmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImRlc3RpbmF0
aW9uIiwgIlRlc3RPYmplY3QiLCAiZW5jb2RlSW50byIsICJVaW50OEFycmF5Iik7IH0pOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJv
b2xlYW4+KGltcGwuZW5jb2RlSW50byhkZXN0aW5hdGlvbi5yZWxlYXNlTm9uTnVsbCgpKSkpKTsK
K30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
X2VuY29kZUludG8sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9lbmNvZGVJbnRvQm9keT4oKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJlbmNvZGVJbnRvIik7Cit9CisKIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90b1N0cmlu
Z0JvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNz
UGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsCmluZGV4IDQyNzBlZjI1OTIwODA0NWM3MWYyNDAxZWNjMDAyYTczNTk3
NjhjNTAuLmRhM2FjYjMxMTRkODhkYTExZGRmZThlZDM0MGQwODcyNTE4ZjgzZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKQEAgLTQ2
Nyw2ICs0NjcsOCBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93IiB9
OwogICAgIHVuZGVmaW5lZCBfbGVhZGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uKCk7IC8vIE5PVEU6
IFdlYklETCByZW1vdmVzIHRoZSBsZWFkaW5nIHVuZGVyc2NvcmUgc28gdGhpcyBpcyBpbnRlcnBy
ZXRlZCBhcyAibGVhZGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uIgogICAgIHVuZGVmaW5lZCBfX2Rv
dWJsZV9sZWFkaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb24oKTsgLy8gTk9URTogV2ViSURMIHJlbW92
ZXMgdGhlIGxlYWRpbmcgdW5kZXJzY29yZSBzbyB0aGlzIGlzIGludGVycHJldGVkIGFzICJfZG91
YmxlX2xlYWRpbmdfdW5kZXJzY29yZV9mdW5jdGlvbiIKICAgICB1bmRlZmluZWQgdHJhaWxpbmdf
dW5kZXJzY29yZV9mdW5jdGlvbl8oKTsKKworICAgIGJvb2xlYW4gZW5jb2RlSW50byhbQWxsb3dT
aGFyZWRdIFVpbnQ4QXJyYXkgZGVzdGluYXRpb24pOwogfTsKIAogLy8gVGhlIGZvbGxvd2luZyBj
b21tZW50cyBzaG91bGQgbm90IGdlbmVyYXRlIGFueSBjb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVj
b2Rlci5pZGwKaW5kZXggZGIzNGNiMmU4YTY1NGU4MDYyOWUzZTY0MzQ3ZTQ1YmMwN2M1NTQ2MS4u
MjE0YWQ3ZTNiMDYzZWExN2M3OTkxMDYxOWEwYWE0MjdhZDdkNTFhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VGV4dERlY29kZXIuaWRsCkBAIC00MSw1ICs0MSw1IEBAIGRpY3Rpb25hcnkgVGV4dERlY29kZU9w
dGlvbnMgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZW5jb2Rpbmc7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gZmF0YWw7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gaWdub3JlQk9NOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gVVNWU3RyaW5nIGRl
Y29kZShvcHRpb25hbCBCdWZmZXJTb3VyY2U/IGlucHV0LCBvcHRpb25hbCBUZXh0RGVjb2RlT3B0
aW9ucyBvcHRpb25zKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFVTVlN0cmluZyBkZWNvZGUo
b3B0aW9uYWwgW0FsbG93U2hhcmVkXSBCdWZmZXJTb3VyY2U/IGlucHV0LCBvcHRpb25hbCBUZXh0
RGVjb2RlT3B0aW9ucyBvcHRpb25zKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVGV4dERlY29kZXJTdHJlYW1EZWNvZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0
RGVjb2RlclN0cmVhbURlY29kZXIuaWRsCmluZGV4IDQzYzE5ZTdhNjQ0OTZkMmE1ZjUwMTA4N2M5
NWI3NjEwMGZmNGNlMDEuLmQzZWI3ZWRjYzc4YjU4MjJiMmJiZGM0YmNlNDVkNjliM2U4YjQ3YTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2RlclN0cmVhbURlY29kZXIu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2RlclN0cmVhbURlY29kZXIuaWRs
CkBAIC0zMiw2ICszMiw2IEBACiAgICAgY29uc3RydWN0b3IoRE9NU3RyaW5nIGxhYmVsLCBib29s
ZWFuIGZhdGFsLCBib29sZWFuIGlnbm9yZUJPTSk7CiAKICAgICBbUHJpdmF0ZUlkZW50aWZpZXJd
IERPTVN0cmluZyBlbmNvZGluZygpOwotICAgIFtQcml2YXRlSWRlbnRpZmllciwgTWF5VGhyb3dF
eGNlcHRpb25dIERPTVN0cmluZyBkZWNvZGUoQnVmZmVyU291cmNlIHNvdXJjZSk7CisgICAgW1By
aXZhdGVJZGVudGlmaWVyLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGRlY29kZShbQWxs
b3dTaGFyZWRdIEJ1ZmZlclNvdXJjZSBzb3VyY2UpOwogICAgIFtQcml2YXRlSWRlbnRpZmllciwg
TWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBmbHVzaCgpOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2Rlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4
dEVuY29kZXIuaWRsCmluZGV4IDA1ZDgyNmQ4MmIyOTkzZjgxOTg5NjEwYzBlYWQxOTRiMGM2YzRi
OTQuLjZiY2I4OTVlOGIwZGE1MjJiOGI1YjRjNWMyMDZiN2JmNmNjZTdhZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2Rlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1RleHRFbmNvZGVyLmlkbApAQCAtMzksNSArMzksNSBAQAogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcgZW5jb2Rpbmc7CiAKICAgICBbTmV3T2JqZWN0XSBVaW50OEFycmF5IGVu
Y29kZShvcHRpb25hbCBVU1ZTdHJpbmcgaW5wdXQgPSAiIik7Ci0gICAgVGV4dEVuY29kZXJFbmNv
ZGVJbnRvUmVzdWx0IGVuY29kZUludG8oVVNWU3RyaW5nIHNvdXJjZSwgVWludDhBcnJheSBkZXN0
aW5hdGlvbik7CisgICAgVGV4dEVuY29kZXJFbmNvZGVJbnRvUmVzdWx0IGVuY29kZUludG8oVVNW
U3RyaW5nIHNvdXJjZSwgW0FsbG93U2hhcmVkXSBVaW50OEFycmF5IGRlc3RpbmF0aW9uKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUuY3BwCmluZGV4IGVmMWQ4YmNhZGEyNWJjMjVmMTUxN2U3ODg5ZTI0MWMzZTQ5ZTNkYWUu
LjdkYjQ5ZmU0YjMzNjZjYTY2ODNmNGI1NzFkMWI3NWI5OWM1YTQxMTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIFJlZjxEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT4gRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZShjb25zdCBXb3JrZXJQCiB9CiAKIERlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlOjpEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBXb3JrZXJQ
YXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIERlZGljYXRl
ZFdvcmtlclRocmVhZCYgdGhyZWFkLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92
aWRlciogc29ja2V0UHJvdmlkZXIpCi0gICAgOiBXb3JrZXJHbG9iYWxTY29wZShwYXJhbXMsIFdU
Rk1vdmUob3JpZ2luKSwgdGhyZWFkLCBXVEZNb3ZlKHRvcE9yaWdpbiksIGNvbm5lY3Rpb25Qcm94
eSwgc29ja2V0UHJvdmlkZXIpCisgICAgOiBXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJUaHJlYWRU
eXBlOjpEZWRpY2F0ZWRXb3JrZXIsIHBhcmFtcywgV1RGTW92ZShvcmlnaW4pLCB0aHJlYWQsIFdU
Rk1vdmUodG9wT3JpZ2luKSwgY29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlcikKICAgICAs
IG1fbmFtZShwYXJhbXMubmFtZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggNTAyZWM3ZDc3NjM1NWY5NmUwZGU4ZGM4YzQzOTE1ODFm
OTA2ZjYwNy4uNmYwZjYyZDc4M2M5NDgxZGJhYjFlZjllMzhlNTc5ZjQwYWExZDIwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTU5LDggKzU5
LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKFdvcmtlckdsb2JhbFNjb3BlKTsKIAotV29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckds
b2JhbFNjb3BlKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywgUmVmPFNlY3VyaXR5T3Jp
Z2luPiYmIG9yaWdpbiwgV29ya2VyVGhyZWFkJiB0aHJlYWQsIFJlZjxTZWN1cml0eU9yaWdpbj4m
JiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJv
eHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikKLSAgICA6IFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKEpTQzo6Vk06OmNyZWF0ZSgpLCAmdGhyZWFkKQorV29ya2VyR2xvYmFsU2Nv
cGU6Oldvcmtlckdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5cGUgdHlwZSwgY29uc3QgV29ya2Vy
UGFyYW1ldGVycyYgcGFyYW1zLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBXb3JrZXJU
aHJlYWQmIHRocmVhZCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50
OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNv
Y2tldFByb3ZpZGVyKQorICAgIDogV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUodHlwZSwgSlND
OjpWTTo6Y3JlYXRlKCksICZ0aHJlYWQpCiAgICAgLCBtX3VybChwYXJhbXMuc2NyaXB0VVJMKQog
ICAgICwgbV9pZGVudGlmaWVyKHBhcmFtcy5pZGVudGlmaWVyKQogICAgICwgbV91c2VyQWdlbnQo
cGFyYW1zLnVzZXJBZ2VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuaAppbmRleCBkOTIyMWRiOWY1ODY3YTJjMGIyODljMzM4ZDNkNDQyMGY4MzY0NmMwLi43YWIw
OWY2YWYzM2U0NWIyMjM3Mzg2YTMwNjMxMDFiOWU1NmYzZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0xMjYsNyArMTI2LDcgQEAgY2xhc3MgV29y
a2VyR2xvYmFsU2NvcGUgOiBwdWJsaWMgU3VwcGxlbWVudGFibGU8V29ya2VyR2xvYmFsU2NvcGU+
LCBwdWJsaWMgQmFzZTYKICAgICBib29sIHdlYkdMRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
d2ViR0xFbmFibGVkOyB9CiAKIHByb3RlY3RlZDoKLSAgICBXb3JrZXJHbG9iYWxTY29wZShjb25z
dCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBXb3JrZXJUaHJlYWQm
LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rp
b25Qcm94eSosIFNvY2tldFByb3ZpZGVyKik7CisgICAgV29ya2VyR2xvYmFsU2NvcGUoV29ya2Vy
VGhyZWFkVHlwZSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9yaWdpbj4m
JiwgV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xp
ZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciopOwogCiAgICAgdm9pZCBh
cHBseUNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyhjb25zdCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCBmNDQ5YWMwMmJl
ODBjZjQ4ZmI4MjkyYzQyOWFiMmMyZTZiM2ZiMGI2Li4yMzg0YTVhOGM3ZDJhMzAyZWVlNWNiNDA1
ZTEwNWUwMjVjOTg0M2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtMzcsOCArMzcsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSk7CiAKLVdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZShSZWY8SlNDOjpWTT4mJiB2bSwgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiB0
aHJlYWQpCi0gICAgOiBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXI+KFdURk1vdmUodm0pLCB0aGlzKSkKK1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
OjpXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShXb3JrZXJUaHJlYWRUeXBlIHR5cGUsIFJlZjxK
U0M6OlZNPiYmIHZtLCBXb3JrZXJPcldvcmtsZXRUaHJlYWQqIHRocmVhZCkKKyAgICA6IG1fc2Ny
aXB0KG1ha2VVbmlxdWU8V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4odHlwZSwgV1RG
TW92ZSh2bSksIHRoaXMpKQogICAgICwgbV90aHJlYWQodGhyZWFkKQogICAgICwgbV9pbnNwZWN0
b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMp
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZS5oCmluZGV4IGYwYzkwYzIyMTliZmU0OTI2YzgyODcxMzY2YzM4OTA5YzYxZjc0ODUu
LjZjMjQ0YTBjNDI3ZWUxYzhjNjVmZGNjNzY1OTUyZjg3N2ZkOWIxNmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZFR5cGUuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Nyw3ICs2OCw3IEBAIGNsYXNzIFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHB1YmxpYyBSZWZD
b3VuCiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZSgpIHsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoUmVmPEpTQzo6Vk0+JiYsIFdvcmtlck9yV29ya2xldFRo
cmVhZCopOworICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5cGUs
IFJlZjxKU0M6OlZNPiYmLCBXb3JrZXJPcldvcmtsZXRUaHJlYWQqKTsKIAogICAgIC8vIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuCiAgICAgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29u
c3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29y
a2xldFNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJP
cldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA0MDFkNWYyZjQwYjdiN2JkZThlNjMz
NjYyYWQzMWZiMWNkM2YyODYxLi5jZDRlYzI0NjgyNTI1YWFiYzY0MmQ4NzdhMGRhMDExZWJkZTEx
NDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JX
b3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTUwLDE3ICs1MCwxNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLVdvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXI6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIoUmVmPFZNPiYmIHZt
LCBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSogZ2xvYmFsU2NvcGUpCitXb3JrZXJPcldvcmts
ZXRTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKFdvcmtl
clRocmVhZFR5cGUgdHlwZSwgUmVmPFZNPiYmIHZtLCBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSogZ2xvYmFsU2NvcGUpCiAgICAgOiBtX3ZtKFdURk1vdmUodm0pKQogICAgICwgbV9nbG9iYWxT
Y29wZShnbG9iYWxTY29wZSkKICAgICAsIG1fZ2xvYmFsU2NvcGVXcmFwcGVyKCptX3ZtKQogewog
ICAgIG1fdm0tPmhlYXAuYWNxdWlyZUFjY2VzcygpOyAvLyBJdCdzIG5vdCBjbGVhciB0aGF0IHdl
IGhhdmUgZ29vZCBkaXNjaXBsaW5lIGZvciBoZWFwIGFjY2Vzcywgc28gdHVybiBpdCBvbiBwZXJt
YW5lbnRseS4KLSAgICBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKG1fdm0uZ2V0KCkp
OworICAgIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29ybGQobV92bS5nZXQoKSwgdHlwZSk7
CiB9CiAKLVdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6Oldvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGdsb2JhbFNjb3BlKQot
ICAgIDogV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcihKU0M6OlZNOjpjcmVhdGUoKSwg
Z2xvYmFsU2NvcGUpCitXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJPcldv
cmtsZXRTY3JpcHRDb250cm9sbGVyKFdvcmtlclRocmVhZFR5cGUgdHlwZSwgV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUqIGdsb2JhbFNjb3BlKQorICAgIDogV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcih0eXBlLCBKU0M6OlZNOjpjcmVhdGUoKSwgZ2xvYmFsU2NvcGUpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmgKaW5kZXggZWU1Nzk3YmRjMDZiMmE4NzUwYzg4MjEwZTcwMmNiNTM2MDhl
NGU5NC4uYzQ5MzAxYWVkM2RkMDg5ZGE3OTczMjc2MGNhZjJmN2I2NGRiMTFiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250
cm9sbGVyLmgKQEAgLTI2LDYgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJX
b3JrZXJUaHJlYWRUeXBlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1J1bkxvb3BUaW1lci5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CkBAIC01MSw4ICs1Miw4IEBAIGNsYXNzIFdvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIoUmVmPEpTQzo6Vk0+JiYsIFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKik7Ci0gICAgZXhwbGljaXQgV29ya2VyT3JXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlcihXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSopOworICAgIFdvcmtlck9y
V29ya2xldFNjcmlwdENvbnRyb2xsZXIoV29ya2VyVGhyZWFkVHlwZSwgUmVmPEpTQzo6Vk0+JiYs
IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKik7CisgICAgZXhwbGljaXQgV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcihXb3JrZXJUaHJlYWRUeXBlLCBXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSopOwogICAgIH5Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKCk7CiAKICAg
ICB2b2lkIHJlbGVhc2VIZWFwQWNjZXNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4MzA2NWJlYTFjNjNmOTE3NTYyMzFhMjdlNDQ4Yjlk
YTJiOWRjOWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZFR5cGUuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBXb3JrZXJUaHJlYWRUeXBlIDog
dWludDhfdCB7CisgICAgTWFpbiwKKyAgICBXb3JrbGV0LAorICAgIERlZGljYXRlZFdvcmtlciwK
KyAgICBTZXJ2aWNlV29ya2VyLAorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmNwcAppbmRleCBjZTU3OWY3YzUzMTg0MDM3MjFjMWEzM2NiOTA1MWE4ZTQ1MDVm
ZGQ4Li44ZDczZmYzNTViYTEwYjhiMTI1MDFhOTY5NTNiZjRmNDA4MTU1YTNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmNwcApAQCAtNTIsNyArNTIsNyBAQCBSZWY8U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlPiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZShjb25zdCBTZXJ2aWNlV29yawog
fQogCiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShj
b25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIGNvbnN0IFdvcmtlclBhcmFtZXRl
cnMmIHBhcmFtcywgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgU2VydmljZVdvcmtlclRo
cmVhZCYgdGhyZWFkLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29j
a2V0UHJvdmlkZXIpCi0gICAgOiBXb3JrZXJHbG9iYWxTY29wZShwYXJhbXMsIFdURk1vdmUob3Jp
Z2luKSwgdGhyZWFkLCBXVEZNb3ZlKHRvcE9yaWdpbiksIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0
UHJvdmlkZXIpCisgICAgOiBXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJUaHJlYWRUeXBlOjpTZXJ2
aWNlV29ya2VyLCBwYXJhbXMsIFdURk1vdmUob3JpZ2luKSwgdGhyZWFkLCBXVEZNb3ZlKHRvcE9y
aWdpbiksIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIpCiAgICAgLCBtX2NvbnRleHRE
YXRhKGNyb3NzVGhyZWFkQ29weShkYXRhKSkKICAgICAsIG1fcmVnaXN0cmF0aW9uKFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb246OmdldE9yQ3JlYXRlKCp0aGlzLCBuYXZpZ2F0b3IoKS5zZXJ2aWNl
V29ya2VyKCksIFdURk1vdmUobV9jb250ZXh0RGF0YS5yZWdpc3RyYXRpb24pKSkKICAgICAsIG1f
Y2xpZW50cyhTZXJ2aWNlV29ya2VyQ2xpZW50czo6Y3JlYXRlKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCBkMDI4MzQyMGFkNzMxN2Fm
YTk5N2EwZTQ4ZTJhODc1NTVjYjcyNGRkLi43YjAwOTkzMTVjNjQzNDgwOGZiYWQ2ZmIwMzE1YzQz
NDdjMmRjYTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxT
Y29wZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdv
cmtsZXRHbG9iYWxTY29wZSk7CiBzdGF0aWMgc3RkOjphdG9taWM8dW5zaWduZWQ+IGdOdW1iZXJP
ZldvcmtsZXRHbG9iYWxTY29wZXMgeyAwIH07CiAKIFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xl
dEdsb2JhbFNjb3BlKFdvcmtlck9yV29ya2xldFRocmVhZCYgdGhyZWFkLCBjb25zdCBXb3JrbGV0
UGFyYW1ldGVycyYgcGFyYW1ldGVycykKLSAgICA6IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KEpTQzo6Vk06OmNyZWF0ZSgpLCAmdGhyZWFkKQorICAgIDogV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUoV29ya2VyVGhyZWFkVHlwZTo6V29ya2xldCwgSlNDOjpWTTo6Y3JlYXRlKCksICZ0aHJl
YWQpCiAgICAgLCBtX3RvcE9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpCiAg
ICAgLCBtX3VybChwYXJhbWV0ZXJzLndpbmRvd1VSTCkKICAgICAsIG1fanNSdW50aW1lRmxhZ3Mo
cGFyYW1ldGVycy5qc1J1bnRpbWVGbGFncykKQEAgLTYyLDcgKzYyLDcgQEAgV29ya2xldEdsb2Jh
bFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyT3JXb3JrbGV0VGhyZWFkJiB0aHJlYWQs
IGNvbnN0IFdvcmsKIH0KIAogV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8SlNDOjpWTT4mJiB2bSwgU2NyaXB0U291cmNlQ29kZSYm
IGNvZGUpCi0gICAgOiBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShXVEZNb3ZlKHZtKSwgbnVs
bHB0cikKKyAgICA6IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5cGU6
OldvcmtsZXQsIFdURk1vdmUodm0pLCBudWxscHRyKQogICAgICwgbV9kb2N1bWVudChtYWtlV2Vh
a1B0cihkb2N1bWVudCkpCiAgICAgLCBtX3RvcE9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
VW5pcXVlKCkpCiAgICAgLCBtX3VybChjb2RlLnVybCgpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdmMTU0OTdkNGJiMTQx
MzJjZjE3ZmRlYzZmNjVhMWEzZmFiYmYxNGMuLmQxZWVjMGQyZjUzNTUyOWI0NGU4ZDRkNGE4MmI4
M2NkZTU3OTI3MWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMC0xMS0xNiAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBXZWJB
c3NlbWJseS5NZW1vcnkgd2l0aCBzaGFyZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxODY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICoganMvZG9tL3Jlc291cmNlcy93ZWJhc3NlbWJseS1tZW1vcnkt
bm9ybWFsLWZhaWwtd29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vcmVzb3VyY2Vz
L3dlYmFzc2VtYmx5LW1lbW9yeS1zaGFyZWQtd29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKG9u
bWVzc2FnZSk6CisgICAgICAgICoganMvZG9tL3dlYmFzc2VtYmx5LW1lbW9yeS1ub3JtYWwtZmFp
bC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS93ZWJhc3NlbWJseS1tZW1v
cnktbm9ybWFsLWZhaWwuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvZG9tL3dlYmFzc2VtYmx5
LW1lbW9yeS1zaGFyZWQtYmFzaWMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9k
b20vd2ViYXNzZW1ibHktbWVtb3J5LXNoYXJlZC1iYXNpYy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBqcy9kb20vd2ViYXNzZW1ibHktbWVtb3J5LXNoYXJlZC1mYWlsLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICoganMvZG9tL3dlYmFzc2VtYmx5LW1lbW9yeS1zaGFyZWQtZmFpbC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9uczoKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLW1lbW9yeS1zdHJ1Y3R1cmVk
LWNsb25lLmpzOiBBZGRlZC4KKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZSk6CisgICAgICAgIChh
c3luYyBzdGFydFRlc3RzKToKKyAgICAgICAgKHRlc3RTaGFyZWRXZWJBc3NlbWJseU1lbW9yeSk6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvc2hhcmVkLW1lbW9yeS1zdHJ1Y3R1cmVkLWNs
b25lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvc2hh
cmVkLW1lbW9yeS1zdHJ1Y3R1cmVkLWNsb25lLmh0bWw6IEFkZGVkLgorCiAyMDIwLTExLTE2ICBZ
dXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wb3J0IGxhdGVz
dCB3cHQvd2FzbSB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggN2MwODY0
NmZiYWMwMjg5ZDAyODZlN2IzZmQ1ZTQyMGM3ZjdmMTYyOS4uZGNiNTU3NzhlNDYyMzE0MzgzNWFm
YmEzMzI3OWEzZWU3YjFjZmY4MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMjAtMTEtMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgV2ViQXNzZW1ibHkuTWVtb3J5IHdpdGggc2hh
cmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg2
OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9k
ZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWFnZW50LWZvcm1hbGlzbS9yZXF1
aXJlcy1zdWNjZXNzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci1zaGFyZWQudGVudGF0aXZl
LmFueS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNh
cGkvbWVtb3J5L2NvbnN0cnVjdG9yLXNoYXJlZC50ZW50YXRpdmUuYW55Lndvcmtlci1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2Nv
bnN0cnVjdG9yLmFueS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9ncm93LmFueS1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVt
b3J5L2dyb3cuYW55Lndvcmtlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvYnVmZmVyLWludGVyZmFjZS9h
dWRpb2J1ZmZlci1jb3B5LWNoYW5uZWwtZXhwZWN0ZWQudHh0OgorCiAyMDIwLTExLTE2ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wb3J0IGxhdGVzdCB3
cHQvd2FzbSB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwt
Mi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWFnZW50LWZvcm1hbGlzbS9yZXF1aXJl
cy1zdWNjZXNzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3Np
bmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWFnZW50LWZvcm1hbGlz
bS9yZXF1aXJlcy1zdWNjZXNzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IDBiOTg2MGNj
YzUzNDRmNTJkZDc4NDUyMTBiOWQ0MjNjMjVjMTQyODkuLjU1OWYwZmU0MjI5NmY2YWNhNGEwZmEw
NTI3NjI5MTNlNjhjNzRkMzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1v
ZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1hZ2VudC1mb3JtYWxpc20vcmVx
dWlyZXMtc3VjY2Vzcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcv
cHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtYWdlbnQt
Zm9ybWFsaXNtL3JlcXVpcmVzLXN1Y2Nlc3MuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTEs
MyArMSwzIEBACiAKLUZBSUwgW1tDYW5CbG9ja11dIGluIGEgRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUgVHlwZWQgYXJyYXkgZm9yIHdhaXQvbm90aWZ5IG11c3Qgd3JhcCBhIFNoYXJlZEFycmF5
QnVmZmVyLgorUEFTUyBbW0NhbkJsb2NrXV0gaW4gYSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLXNoYXJlZC50ZW50YXRpdmUuYW55LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9qc2FwaS9tZW1vcnkvY29uc3RydWN0b3Itc2hhcmVkLnRlbnRhdGl2ZS5hbnktZXhwZWN0
ZWQudHh0CmluZGV4IDY1NTFiZTA2YmIwY2FmNmFlMzA2YTY0MmJjNWIxOWFkMTdhNTJkMzkuLjU3
MDVmMzI3N2I2MTk2YTkwOTViNmUyM2VkMTI2MGRhY2NmZDNjNjcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkv
Y29uc3RydWN0b3Itc2hhcmVkLnRlbnRhdGl2ZS5hbnktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkv
Y29uc3RydWN0b3Itc2hhcmVkLnRlbnRhdGl2ZS5hbnktZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEs
NSBAQAogCi1GQUlMIFNoYXJlZCBtZW1vcnkgd2l0aG91dCBtYXhpbXVtIGFzc2VydF90aHJvd3Nf
anM6IGZ1bmN0aW9uICIoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgImluaXRpYWwiOiAx
MCwgInNoYXJlZCI6IHRydWUgfSkiIGRpZCBub3QgdGhyb3cKLUZBSUwgT3JkZXIgb2YgZXZhbHVh
dGlvbiBmb3IgZGVzY3JpcHRvciAod2l0aCBzaGFyZWQpIGFzc2VydF9hcnJheV9lcXVhbHM6IGxl
bmd0aHMgZGlmZmVyLCBleHBlY3RlZCBhcnJheSBbImluaXRpYWwiLCAiaW5pdGlhbCB2YWx1ZU9m
IiwgIm1heGltdW0iLCAibWF4aW11bSB2YWx1ZU9mIiwgInNoYXJlZCJdIGxlbmd0aCA1LCBnb3Qg
WyJpbml0aWFsIiwgImluaXRpYWwgdmFsdWVPZiIsICJtYXhpbXVtIiwgIm1heGltdW0gdmFsdWVP
ZiJdIGxlbmd0aCA0Ci1GQUlMIFNoYXJlZCBtZW1vcnkgYXNzZXJ0X2VxdWFsczogdW5kZWZpbmVk
OiBjb25zdHJ1Y3RvciBleHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UKK1BBU1MgU2hhcmVkIG1l
bW9yeSB3aXRob3V0IG1heGltdW0KK1BBU1MgT3JkZXIgb2YgZXZhbHVhdGlvbiBmb3IgZGVzY3Jp
cHRvciAod2l0aCBzaGFyZWQpCitQQVNTIFNoYXJlZCBtZW1vcnkKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9y
eS9jb25zdHJ1Y3Rvci1zaGFyZWQudGVudGF0aXZlLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21l
bW9yeS9jb25zdHJ1Y3Rvci1zaGFyZWQudGVudGF0aXZlLmFueS53b3JrZXItZXhwZWN0ZWQudHh0
CmluZGV4IDY1NTFiZTA2YmIwY2FmNmFlMzA2YTY0MmJjNWIxOWFkMTdhNTJkMzkuLjU3MDVmMzI3
N2I2MTk2YTkwOTViNmUyM2VkMTI2MGRhY2NmZDNjNjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvY29uc3Ry
dWN0b3Itc2hhcmVkLnRlbnRhdGl2ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5
L2NvbnN0cnVjdG9yLXNoYXJlZC50ZW50YXRpdmUuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAg
LTEsNSArMSw1IEBACiAKLUZBSUwgU2hhcmVkIG1lbW9yeSB3aXRob3V0IG1heGltdW0gYXNzZXJ0
X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyAiaW5p
dGlhbCI6IDEwLCAic2hhcmVkIjogdHJ1ZSB9KSIgZGlkIG5vdCB0aHJvdwotRkFJTCBPcmRlciBv
ZiBldmFsdWF0aW9uIGZvciBkZXNjcmlwdG9yICh3aXRoIHNoYXJlZCkgYXNzZXJ0X2FycmF5X2Vx
dWFsczogbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsiaW5pdGlhbCIsICJpbml0aWFs
IHZhbHVlT2YiLCAibWF4aW11bSIsICJtYXhpbXVtIHZhbHVlT2YiLCAic2hhcmVkIl0gbGVuZ3Ro
IDUsIGdvdCBbImluaXRpYWwiLCAiaW5pdGlhbCB2YWx1ZU9mIiwgIm1heGltdW0iLCAibWF4aW11
bSB2YWx1ZU9mIl0gbGVuZ3RoIDQKLUZBSUwgU2hhcmVkIG1lbW9yeSBhc3NlcnRfZXF1YWxzOiB1
bmRlZmluZWQ6IGNvbnN0cnVjdG9yIGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQorUEFTUyBT
aGFyZWQgbWVtb3J5IHdpdGhvdXQgbWF4aW11bQorUEFTUyBPcmRlciBvZiBldmFsdWF0aW9uIGZv
ciBkZXNjcmlwdG9yICh3aXRoIHNoYXJlZCkKK1BBU1MgU2hhcmVkIG1lbW9yeQogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNh
cGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9y
LmFueS1leHBlY3RlZC50eHQKaW5kZXggNWY2ZDVlNzE0ZGE0MjgzZTM1YTU5MjdhYWYzMzk4YzFi
YzJmZTBkMi4uNDQzNmM5NjhiNDJjYzYyNjg0YWIyMjI5NjEwYzU2MDE5ZDhjNzMyNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pz
YXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5hbnktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvY29uc3Ry
dWN0b3IuYW55LWV4cGVjdGVkLnR4dApAQCAtMjIsNSArMjIsNSBAQCBQQVNTIFByb3h5IGRlc2Ny
aXB0b3IKIFBBU1MgT3JkZXIgb2YgZXZhbHVhdGlvbiBmb3IgZGVzY3JpcHRvcgogUEFTUyBaZXJv
IGluaXRpYWwKIFBBU1MgTm9uLXplcm8gaW5pdGlhbAotRkFJTCBTdHJheSBhcmd1bWVudCBXZWJB
c3NlbWJseS5NZW1vcnkgZXhwZWN0cyBleGFjdGx5IG9uZSBhcmd1bWVudAorUEFTUyBTdHJheSBh
cmd1bWVudAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFueS53b3JrZXItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNt
L2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCA1
ZjZkNWU3MTRkYTQyODNlMzVhNTkyN2FhZjMzOThjMWJjMmZlMGQyLi40NDM2Yzk2OGI0MmNjNjI2
ODRhYjIyMjk2MTBjNTYwMTlkOGM3MzI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFu
eS53b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvY29uc3RydWN0b3IuYW55Lndvcmtlci1l
eHBlY3RlZC50eHQKQEAgLTIyLDUgKzIyLDUgQEAgUEFTUyBQcm94eSBkZXNjcmlwdG9yCiBQQVNT
IE9yZGVyIG9mIGV2YWx1YXRpb24gZm9yIGRlc2NyaXB0b3IKIFBBU1MgWmVybyBpbml0aWFsCiBQ
QVNTIE5vbi16ZXJvIGluaXRpYWwKLUZBSUwgU3RyYXkgYXJndW1lbnQgV2ViQXNzZW1ibHkuTWVt
b3J5IGV4cGVjdHMgZXhhY3RseSBvbmUgYXJndW1lbnQKK1BBU1MgU3RyYXkgYXJndW1lbnQKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
YXNtL2pzYXBpL21lbW9yeS9ncm93LmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2dyb3cuYW55LWV4
cGVjdGVkLnR4dAppbmRleCA0MDA5ZjZhZWIyZjhlNzBjMThiMDAzZjA2ZjhjMDc1YWYyNDQ0NzYz
Li5hNWRlNjBkZDYyODA2NjMyNTA3Y2ZmYWE1NjVhMmRhZDg5YjdjZjBlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVt
b3J5L2dyb3cuYW55LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2dyb3cuYW55LWV4cGVjdGVkLnR4
dApAQCAtMTcsNSArMTcsNSBAQCBQQVNTIE91dC1vZi1yYW5nZSBhcmd1bWVudDogNjg3MTk0NzY3
MzYKIFBBU1MgT3V0LW9mLXJhbmdlIGFyZ3VtZW50OiAiMHgxMDAwMDAwMDAiCiBQQVNTIE91dC1v
Zi1yYW5nZSBhcmd1bWVudDogb2JqZWN0ICJbb2JqZWN0IE9iamVjdF0iCiBQQVNTIFN0cmF5IGFy
Z3VtZW50Ci1GQUlMIEdyb3dpbmcgc2hhcmVkIG1lbW9yeSBkb2VzIG5vdCBkZXRhY2ggb2xkIGJ1
ZmZlciBhc3NlcnRfZXF1YWxzOiBCdWZmZXIgYmVmb3JlIGdyb3dpbmc6IGNvbnN0cnVjdG9yIGV4
cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQorUEFTUyBHcm93aW5nIHNoYXJlZCBtZW1vcnkgZG9l
cyBub3QgZGV0YWNoIG9sZCBidWZmZXIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9ncm93LmFueS53b3Jr
ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9ncm93LmFueS53b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4
IDQwMDlmNmFlYjJmOGU3MGMxOGIwMDNmMDZmOGMwNzVhZjI0NDQ3NjMuLmE1ZGU2MGRkNjI4MDY2
MzI1MDdjZmZhYTU2NWEyZGFkODliN2NmMGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnkud29y
a2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2dyb3cuYW55Lndvcmtlci1leHBlY3RlZC50eHQK
QEAgLTE3LDUgKzE3LDUgQEAgUEFTUyBPdXQtb2YtcmFuZ2UgYXJndW1lbnQ6IDY4NzE5NDc2NzM2
CiBQQVNTIE91dC1vZi1yYW5nZSBhcmd1bWVudDogIjB4MTAwMDAwMDAwIgogUEFTUyBPdXQtb2Yt
cmFuZ2UgYXJndW1lbnQ6IG9iamVjdCAiW29iamVjdCBPYmplY3RdIgogUEFTUyBTdHJheSBhcmd1
bWVudAotRkFJTCBHcm93aW5nIHNoYXJlZCBtZW1vcnkgZG9lcyBub3QgZGV0YWNoIG9sZCBidWZm
ZXIgYXNzZXJ0X2VxdWFsczogQnVmZmVyIGJlZm9yZSBncm93aW5nOiBjb25zdHJ1Y3RvciBleHBl
Y3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UKK1BBU1MgR3Jvd2luZyBzaGFyZWQgbWVtb3J5IGRvZXMg
bm90IGRldGFjaCBvbGQgYnVmZmVyCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9i
dWZmZXItaW50ZXJmYWNlL2F1ZGlvYnVmZmVyLWNvcHktY2hhbm5lbC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1h
dWRpby1hcGkvdGhlLWF1ZGlvYnVmZmVyLWludGVyZmFjZS9hdWRpb2J1ZmZlci1jb3B5LWNoYW5u
ZWwtZXhwZWN0ZWQudHh0CmluZGV4IDA4ZDUwZjhiNTFmZTc0MGE3NjAwMTI4NmU0OTlkYmRiMDVl
YmViNGIuLjM3OTM0ZmVjZjM2OTQxNGFmZWZmYTc2NWY0NTlkYWM4ZTA0ZjE5YzggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8v
dGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9idWZmZXItaW50ZXJmYWNlL2F1ZGlvYnVmZmVyLWNvcHkt
Y2hhbm5lbC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb2J1ZmZlci1pbnRl
cmZhY2UvYXVkaW9idWZmZXItY29weS1jaGFubmVsLWV4cGVjdGVkLnR4dApAQCAtMTksOSArMTks
OSBAQCBQQVNTICAgNDogYnVmZmVyLmNvcHlGcm9tQ2hhbm5lbCh4LCAzKSB0aHJldyBJbmRleFNp
emVFcnJvcjogIk5vdCBhIHZhbGlkIGNoYW5uZQogUEFTUyAgIDU6IGJ1ZmZlci5jb3B5RnJvbUNo
YW5uZWwoeCwgMCwgLTEpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uLgogUEFTUyAgIDY6IGJ1
ZmZlci5jb3B5RnJvbUNoYW5uZWwoeCwgMCwgMTYpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9u
LgogUEFTUyAgIDc6IGJ1ZmZlci5jb3B5RnJvbUNoYW5uZWwoeCwgMykgdGhyZXcgSW5kZXhTaXpl
RXJyb3I6ICJOb3QgYSB2YWxpZCBjaGFubmVsTnVtYmVyLiIuCi1GQUlMIFggODogYnVmZmVyLmNv
cHlGcm9tQ2hhbm5lbChTaGFyZWRBcnJheUJ1ZmZlciB2aWV3LCAwKSBkaWQgbm90IHRocm93IGFu
IGV4Y2VwdGlvbi4gYXNzZXJ0X3RydWU6IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFgg
OTogYnVmZmVyLmNvcHlGcm9tQ2hhbm5lbChTaGFyZWRBcnJheUJ1ZmZlciB2aWV3LCAwLCAwKSBk
aWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4gYXNzZXJ0X3RydWU6IGV4cGVjdGVkIHRydWUgZ290
IGZhbHNlCi1GQUlMIDwgW2NvcHlGcm9tLWV4Y2VwdGlvbnNdIDIgb3V0IG9mIDExIGFzc2VydGlv
bnMgd2VyZSBmYWlsZWQuIGFzc2VydF90cnVlOiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorUEFT
UyAgIDg6IGJ1ZmZlci5jb3B5RnJvbUNoYW5uZWwoU2hhcmVkQXJyYXlCdWZmZXIgdmlldywgMCkg
dGhyZXcgVHlwZUVycm9yOiAiQXJndW1lbnQgMSAoJ2Rlc3RpbmF0aW9uJykgdG8gQXVkaW9CdWZm
ZXIuY29weUZyb21DaGFubmVsIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgRmxvYXQzMkFycmF5Ii4K
K1BBU1MgICA5OiBidWZmZXIuY29weUZyb21DaGFubmVsKFNoYXJlZEFycmF5QnVmZmVyIHZpZXcs
IDAsIDApIHRocmV3IFR5cGVFcnJvcjogIkFyZ3VtZW50IDEgKCdkZXN0aW5hdGlvbicpIHRvIEF1
ZGlvQnVmZmVyLmNvcHlGcm9tQ2hhbm5lbCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEZsb2F0MzJB
cnJheSIuCitQQVNTIDwgW2NvcHlGcm9tLWV4Y2VwdGlvbnNdIEFsbCBhc3NlcnRpb25zIHBhc3Nl
ZC4gKHRvdGFsIDExIGFzc2VydGlvbnMpCiBQQVNTID4gW2NvcHlUby1leGNlcHRpb25zXQogUEFT
UyAgIEF1ZGlvQnVmZmVyLnByb3RvdHlwZS5jb3B5VG9DaGFubmVsIGRvZXMgZXhpc3QuCiBQQVNT
ICAgMDogYnVmZmVyLmNvcHlUb0NoYW5uZWwobnVsbCwgMCkgdGhyZXcgVHlwZUVycm9yOiAiQXJn
dW1lbnQgMSAoJ3NvdXJjZScpIHRvIEF1ZGlvQnVmZmVyLmNvcHlUb0NoYW5uZWwgbXVzdCBiZSBh
biBpbnN0YW5jZSBvZiBGbG9hdDMyQXJyYXkiLgpAQCAtMzEsOSArMzEsOSBAQCBQQVNTICAgMzog
YnVmZmVyLmNvcHlUb0NoYW5uZWwoeCwgMykgdGhyZXcgSW5kZXhTaXplRXJyb3I6ICJOb3QgYSB2
YWxpZCBjaGFubmVsTgogUEFTUyAgIDQ6IGJ1ZmZlci5jb3B5VG9DaGFubmVsKHgsIDAsIC0xKSBk
aWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4KIFBBU1MgICA1OiBidWZmZXIuY29weVRvQ2hhbm5l
bCh4LCAwLCAxNikgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24uCiBQQVNTICAgNjogYnVmZmVy
LmNvcHlUb0NoYW5uZWwoeCwgMykgdGhyZXcgSW5kZXhTaXplRXJyb3I6ICJOb3QgYSB2YWxpZCBj
aGFubmVsTnVtYmVyLiIuCi1GQUlMIFggNzogYnVmZmVyLmNvcHlUb0NoYW5uZWwoU2hhcmVkQXJy
YXlCdWZmZXIgdmlldywgMCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24uIGFzc2VydF90cnVl
OiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBYIDg6IGJ1ZmZlci5jb3B5VG9DaGFubmVs
KFNoYXJlZEFycmF5QnVmZmVyIHZpZXcsIDAsIDApIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9u
LiBhc3NlcnRfdHJ1ZTogZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgPCBbY29weVRvLWV4
Y2VwdGlvbnNdIDIgb3V0IG9mIDEwIGFzc2VydGlvbnMgd2VyZSBmYWlsZWQuIGFzc2VydF90cnVl
OiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorUEFTUyAgIDc6IGJ1ZmZlci5jb3B5VG9DaGFubmVs
KFNoYXJlZEFycmF5QnVmZmVyIHZpZXcsIDApIHRocmV3IFR5cGVFcnJvcjogIkFyZ3VtZW50IDEg
KCdzb3VyY2UnKSB0byBBdWRpb0J1ZmZlci5jb3B5VG9DaGFubmVsIG11c3QgYmUgYW4gaW5zdGFu
Y2Ugb2YgRmxvYXQzMkFycmF5Ii4KK1BBU1MgICA4OiBidWZmZXIuY29weVRvQ2hhbm5lbChTaGFy
ZWRBcnJheUJ1ZmZlciB2aWV3LCAwLCAwKSB0aHJldyBUeXBlRXJyb3I6ICJBcmd1bWVudCAxICgn
c291cmNlJykgdG8gQXVkaW9CdWZmZXIuY29weVRvQ2hhbm5lbCBtdXN0IGJlIGFuIGluc3RhbmNl
IG9mIEZsb2F0MzJBcnJheSIuCitQQVNTIDwgW2NvcHlUby1leGNlcHRpb25zXSBBbGwgYXNzZXJ0
aW9ucyBwYXNzZWQuICh0b3RhbCAxMCBhc3NlcnRpb25zKQogUEFTUyA+IFtjb3B5RnJvbS12YWxp
ZGF0ZV0KIFBBU1MgICBidWZmZXIuY29weUZyb21DaGFubmVsKGRzdDgsIDApIGlzIGlkZW50aWNh
bCB0byB0aGUgYXJyYXkgWzEsMiwzLDQsNSw2LDcsOF0uCiBQQVNTICAgYnVmZmVyLmNvcHlGcm9t
Q2hhbm5lbChkc3Q4LCAxKSBpcyBpZGVudGljYWwgdG8gdGhlIGFycmF5IFsyLDMsNCw1LDYsNyw4
LDldLgpAQCAtNjAsNSArNjAsNSBAQCBQQVNTICAgYnVmZmVyLmNvcHlUb0NoYW5uZWwoc3JjMTAs
IDAsIDUpIGlzIGlkZW50aWNhbCB0byB0aGUgYXJyYXkgWy0xLC0xLC0xLC0xLAogUEFTUyAgIGJ1
ZmZlci5jb3B5VG9DaGFubmVsKHNyYzEwLCAxLCA1KSBpcyBpZGVudGljYWwgdG8gdGhlIGFycmF5
IFstMSwtMSwtMSwtMSwtMSwxLDIsMyw0LDUsNiw3LDgsOSwxMCwtMS4uLl0uCiBQQVNTICAgYnVm
ZmVyLmNvcHlUb0NoYW5uZWwoc3JjMTAsIDIsIDUpIGlzIGlkZW50aWNhbCB0byB0aGUgYXJyYXkg
Wy0xLC0xLC0xLC0xLC0xLDEsMiwzLDQsNSw2LDcsOCw5LDEwLC0xLi4uXS4KIFBBU1MgPCBbY29w
eVRvLXZhbGlkYXRlXSBBbGwgYXNzZXJ0aW9ucyBwYXNzZWQuICh0b3RhbCAxMCBhc3NlcnRpb25z
KQotRkFJTCAjIEFVRElUIFRBU0sgUlVOTkVSIEZJTklTSEVEOiAyIG91dCBvZiA1IHRhc2tzIHdl
cmUgZmFpbGVkLiBhc3NlcnRfdHJ1ZTogZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK1BBU1MgIyBB
VURJVCBUQVNLIFJVTk5FUiBGSU5JU0hFRDogNSB0YXNrcyByYW4gc3VjY2Vzc2Z1bGx5LgogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vcmVzb3VyY2VzL3dlYmFzc2VtYmx5LW1lbW9y
eS1ub3JtYWwtZmFpbC13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9qcy9kb20vcmVzb3VyY2VzL3dl
YmFzc2VtYmx5LW1lbW9yeS1ub3JtYWwtZmFpbC13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY5ZGUy
OWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5MQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvZG9tL3Jlc291cmNlcy93ZWJhc3NlbWJseS1tZW1vcnktc2hhcmVkLXdvcmtlci5qcyBi
L0xheW91dFRlc3RzL2pzL2RvbS9yZXNvdXJjZXMvd2ViYXNzZW1ibHktbWVtb3J5LXNoYXJlZC13
b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ2OGI1NzZkN2ZhZGRmYTBiYTdiM2NmYzYxMzIzMDM0NDg0
NWFiNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9yZXNvdXJjZXMvd2Vi
YXNzZW1ibHktbWVtb3J5LXNoYXJlZC13b3JrZXIuanMKQEAgLTAsMCArMSw5IEBACitvbm1lc3Nh
Z2UgPSBmdW5jdGlvbiAobWVzc2FnZSkgeworICAgIHZhciBtZW1vcnkgPSBtZXNzYWdlLmRhdGE7
CisgICAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKTsKKyAgICB2aWV3
WzBdID0gNDM7CisgICAgdmlld1sxXSA9IDQyOworICAgIG1lbW9yeS5ncm93KDEpOworICAgIHZp
ZXdbMl0gPSA0NDsKKyAgICBzZWxmLnBvc3RNZXNzYWdlKCJET05FIik7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9kb20vd2ViYXNzZW1ibHktbWVtb3J5LW5vcm1hbC1mYWlsLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS93ZWJhc3NlbWJseS1tZW1vcnktbm9ybWFsLWZh
aWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwZWZkNmE4ZWY0YjViOGM2MmEwNzRmYzkzNWIz
MjQwZmFiYTBiMjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vd2ViYXNz
ZW1ibHktbWVtb3J5LW5vcm1hbC1mYWlsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitU
ZXN0IHNlbmRpbmcgV2ViQXNzZW1ibHkuTWVtb3J5IHZpYSBwb3N0TWVzc2FnZSB0byBhIHdvcmtl
ciBhbmQgZmFpbC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgd29ya2Vy
LnBvc3RNZXNzYWdlKG1lbW9yeSkgdGhyZXcgZXhjZXB0aW9uIERhdGFDbG9uZUVycm9yOiBUaGUg
b2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vd2Vi
YXNzZW1ibHktbWVtb3J5LW5vcm1hbC1mYWlsLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vd2Vi
YXNzZW1ibHktbWVtb3J5LW5vcm1hbC1mYWlsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGJjOTcyN2RiOGJk
NjYxZGYwOWU5Y2RiZDJmOTg5ZWI5YjZjOWZiMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL2RvbS93ZWJhc3NlbWJseS1tZW1vcnktbm9ybWFsLWZhaWwuaHRtbApAQCAtMCwwICsx
LDIxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3Qgc2Vu
ZGluZyBXZWJBc3NlbWJseS5NZW1vcnkgdmlhIHBvc3RNZXNzYWdlIHRvIGEgd29ya2VyIGFuZCBm
YWlsLiIpOworCitpZiAodHlwZW9mIFdlYkFzc2VtYmx5ICE9PSAndW5kZWZpbmVkJykgeworICAg
IHdpbmRvdy5tZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogMSwgbWF4
aW11bTogMiB9KTsKKyAgICB3aW5kb3cud29ya2VyID0gbmV3IFdvcmtlcigiLi9yZXNvdXJjZXMv
d2ViYXNzZW1ibHktbWVtb3J5LW5vcm1hbC1mYWlsLXdvcmtlci5qcyIpOworICAgIHNob3VsZFRo
cm93KGB3b3JrZXIucG9zdE1lc3NhZ2UobWVtb3J5KWApOworfQorCis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS93ZWJhc3NlbWJseS1t
ZW1vcnktc2hhcmVkLWJhc2ljLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS93ZWJh
c3NlbWJseS1tZW1vcnktc2hhcmVkLWJhc2ljLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDU1
Yzc4OTA5NWYxNmQ0MDNlYzBiMTg5ZDY5NGU3ZjVlMzk3NjFjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvZG9tL3dlYmFzc2VtYmx5LW1lbW9yeS1zaGFyZWQtYmFzaWMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1Rlc3Qgc2VuZGluZyBzaGFyZWQgV2ViQXNzZW1ibHku
TWVtb3J5IHZpYSBwb3N0TWVzc2FnZSB0byBhIHdvcmtlci4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1Mgdmlld1swXSBpcyA0MgorUEFTUyBtZXNzYWdlLmRhdGEgaXMgIkRP
TkUiCitQQVNTIHZpZXdbMF0gaXMgNDMKK1BBU1Mgdmlld1sxXSBpcyA0MgorUEFTUyB2aWV3WzJd
IGlzIDQ0CitQQVNTIGJ1ZmZlci5ieXRlTGVuZ3RoIGlzIDY1NTM2CitQQVNTIG1lbW9yeS5idWZm
ZXIuYnl0ZUxlbmd0aCBpcyAxMzEwNzIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vd2ViYXNz
ZW1ibHktbWVtb3J5LXNoYXJlZC1iYXNpYy5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL3dlYmFz
c2VtYmx5LW1lbW9yeS1zaGFyZWQtYmFzaWMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNWY5NzBkMDA0ZmYx
NjlmYWQ5NmEzYmZmMDQ1NGFjOTUxOTQ5YjIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvZG9tL3dlYmFzc2VtYmx5LW1lbW9yeS1zaGFyZWQtYmFzaWMuaHRtbApAQCAtMCwwICsx
LDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3Qgc2Vu
ZGluZyBzaGFyZWQgV2ViQXNzZW1ibHkuTWVtb3J5IHZpYSBwb3N0TWVzc2FnZSB0byBhIHdvcmtl
ci4iKTsKKworaWYgKHR5cGVvZiBXZWJBc3NlbWJseSAhPT0gJ3VuZGVmaW5lZCcpIHsKKyAgICBq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5
KHsgaW5pdGlhbDogMSwgbWF4aW11bTogMiwgc2hhcmVkOiB0cnVlIH0pOworICAgIGJ1ZmZlciA9
IG1lbW9yeS5idWZmZXI7CisgICAgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7CisgICAg
dmlld1swXSA9IDQyOworICAgIHNob3VsZEJlKGB2aWV3WzBdYCwgYDQyYCk7CisgICAgd29ya2Vy
ID0gbmV3IFdvcmtlcigiLi9yZXNvdXJjZXMvd2ViYXNzZW1ibHktbWVtb3J5LXNoYXJlZC13b3Jr
ZXIuanMiKTsKKyAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24obXNnKSB7CisgICAgICAg
IG1lc3NhZ2UgPSBtc2c7CisgICAgICAgIHNob3VsZEJlKGBtZXNzYWdlLmRhdGFgLCBgIkRPTkUi
YCk7CisgICAgICAgIHNob3VsZEJlKGB2aWV3WzBdYCwgYDQzYCk7CisgICAgICAgIHNob3VsZEJl
KGB2aWV3WzFdYCwgYDQyYCk7CisgICAgICAgIHNob3VsZEJlKGB2aWV3WzJdYCwgYDQ0YCk7Cisg
ICAgICAgIHNob3VsZEJlKGBidWZmZXIuYnl0ZUxlbmd0aGAsIGA2NTUzNmApOworICAgICAgICBz
aG91bGRCZShgbWVtb3J5LmJ1ZmZlci5ieXRlTGVuZ3RoYCwgYDEzMTA3MmApOworICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICB9OworICAgIHdvcmtlci5wb3N0TWVzc2FnZShtZW1vcnkpOwor
fQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9kb20vd2ViYXNzZW1ibHktbWVtb3J5LXNoYXJlZC1mYWlsLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2pzL2RvbS93ZWJhc3NlbWJseS1tZW1vcnktc2hhcmVkLWZhaWwtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjJiN2YzYTBiZmNmNjc4OTNiMzgzZmNmMzk0Yzk3YjY4N2JjNWU1YWQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vd2ViYXNzZW1ibHktbWVtb3J5LXNo
YXJlZC1mYWlsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0IHNlbmRpbmcgc2hh
cmVkIFdlYkFzc2VtYmx5Lk1lbW9yeSdzIFNoYXJlZEFycmF5QnVmZmVyIHZpYSBwb3N0TWVzc2Fn
ZSB0byBhIHdvcmtlciB3aXRoIHRyYW5zZmVyLWxpc3QgYW5kIGZhaWwuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIHdvcmtlci5wb3N0TWVzc2FnZShtZW1vcnkuYnVmZmVy
LCBbbWVtb3J5LmJ1ZmZlcl0pIHRocmV3IGV4Y2VwdGlvbiBEYXRhQ2xvbmVFcnJvcjogVGhlIG9i
amVjdCBjYW4gbm90IGJlIGNsb25lZC4uCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL3dlYmFz
c2VtYmx5LW1lbW9yeS1zaGFyZWQtZmFpbC5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL3dlYmFz
c2VtYmx5LW1lbW9yeS1zaGFyZWQtZmFpbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2MWNhMTFiYWVmZDNm
NWU2NTIzMzE4OTQyMmQzYTU5OTg4ZGUyZDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9qcy9kb20vd2ViYXNzZW1ibHktbWVtb3J5LXNoYXJlZC1mYWlsLmh0bWwKQEAgLTAsMCArMSwy
MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHNlbmRp
bmcgc2hhcmVkIFdlYkFzc2VtYmx5Lk1lbW9yeSdzIFNoYXJlZEFycmF5QnVmZmVyIHZpYSBwb3N0
TWVzc2FnZSB0byBhIHdvcmtlciB3aXRoIHRyYW5zZmVyLWxpc3QgYW5kIGZhaWwuIik7CisKK2lm
ICh0eXBlb2YgV2ViQXNzZW1ibHkgIT09ICd1bmRlZmluZWQnKSB7CisgICAgd2luZG93Lm1lbW9y
eSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAxLCBtYXhpbXVtOiAyLCBzaGFy
ZWQ6IHRydWUgfSk7CisgICAgd2luZG93LndvcmtlciA9IG5ldyBXb3JrZXIoIi4vcmVzb3VyY2Vz
L3dlYmFzc2VtYmx5LW1lbW9yeS1ub3JtYWwtZmFpbC13b3JrZXIuanMiKTsKKyAgICBzaG91bGRU
aHJvdyhgd29ya2VyLnBvc3RNZXNzYWdlKG1lbW9yeS5idWZmZXIsIFttZW1vcnkuYnVmZmVyXSlg
KTsKK30KKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDI0OTYxZTUyYzlhOWU2ZGY3ZTczZjQzMDM5NGYw
MGYzYWJlYjdjZWUuLmM1Y2Y4NTMwNmNiODYxMGMxZjhlZWM0Y2NhNzA2Mzk4MjY3YjQ5MWYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC00NjAwLDMgKzQ2
MDAsOSBAQCB3ZWJraXQub3JnL2IvMjE4MDQwIHN2Zy9jbGlwLXBhdGgvY2xpcC1wYXRoLWludmFs
aWQuc3ZnIFsgUGFzcyBDcmFzaCBdCiAjIFdpbmRvd3MgZG9lc24ndCBzdXBwb3J0IGNvbG9yIGZv
bnRzLgogd2Via2l0Lm9yZy9iLzIxODM0NiBmYXN0L3RleHQvY2FudmFzLWNvbG9yLWZvbnRzIFsg
UGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTgzNDYgaHR0cC90ZXN0cy9j
YW52YXMvY29sb3ItZm9udHMgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQorCisjIFdlYkFzc2Vt
Ymx5IGlzIG5vdCBlbmFibGVkCitqcy9kb20vd2ViYXNzZW1ibHktbWVtb3J5LXNoYXJlZC1iYXNp
Yy5odG1sIFsgU2tpcCBdCitqcy9kb20vd2ViYXNzZW1ibHktbWVtb3J5LW5vcm1hbC1mYWlsLmh0
bWwgWyBTa2lwIF0KK2pzL2RvbS93ZWJhc3NlbWJseS1tZW1vcnktc2hhcmVkLWZhaWwuaHRtbCBb
IFNraXAgXQorc3RvcmFnZS9pbmRleGVkZGIvc2hhcmVkLW1lbW9yeS1zdHJ1Y3R1cmVkLWNsb25l
Lmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9zaGFyZWQtbWVtb3J5LXN0cnVjdHVyZWQtY2xvbmUuanMgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLW1lbW9yeS1zdHJ1Y3R1cmVkLWNs
b25lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjMzOWYxZWIxMGQ0OTQ3NDllZGQ2ZmVhZDJhYjgyN2UxMDk3YzJh
MWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvc2hhcmVkLW1lbW9yeS1zdHJ1Y3R1cmVkLWNsb25lLmpzCkBAIC0wLDAgKzEsNDAgQEAK
K2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOwor
fQorCitkZXNjcmlwdGlvbigiVGVzdCBzdHJ1Y3R1cmVkIGNsb25lIHBlcm11dGF0aW9ucyBpbiBJ
bmRleGVkREIgd2l0aCBzaGFyZWQgbWVtb3JpZXMuIik7CisKK2luZGV4ZWREQlRlc3QocHJlcGFy
ZURhdGFiYXNlLCBzdGFydFRlc3RzKTsKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCit7Cisg
ICAgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgZGVidWcoIlRoaXMgaW5kZXgg
aXMgbm90IHVzZWQsIGJ1dCBldmFsdWF0aW5nIGtleSBwYXRoIG9uIGVhY2ggcHV0KCkgY2FsbCB3
aWxsIGV4ZXJjaXNlIChkZSlzZXJpYWxpemF0aW9uOiIpOworICAgIGV2YWxBbmRMb2coInN0b3Jl
LmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAnZHVtbXlLZXlQYXRoJykiKTsKK30KKworYXN5bmMg
ZnVuY3Rpb24gc3RhcnRUZXN0cygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJSdW5u
aW5nIHRlc3RzLi4uIik7CisKKyAgICBhd2FpdCB0ZXN0U2hhcmVkV2ViQXNzZW1ibHlNZW1vcnko
KTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gdGVzdFNoYXJlZFdlYkFzc2Vt
Ymx5TWVtb3J5KCkKK3sKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkg
PT4geworICAgICAgICBkZWJ1ZygiVGVzdCBzaGFyZWQgV2ViQXNzZW1ibHkuTWVtb3J5Iik7CisK
KyAgICAgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmVO
YW1lJywgJ3JlYWR3cml0ZScpIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgICAgIHRyYW5zYWN0aW9uLm9u
ZXJyb3IgPSByZWplY3Q7CisgICAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSByZWplY3Q7Cisg
ICAgICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSByZXNvbHZlOworCisgICAgICAgIG1lbW9y
eSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAxLCBtYXhpbXVtOiAxLCBzaGFy
ZWQ6IHRydWUgfSk7CisgICAgICAgIHNob3VsZFRocm93KGBzdG9yZS5wdXQobWVtb3J5LCAna2V5
JylgKTsKKyAgICB9KTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3NoYXJlZC1tZW1vcnktc3RydWN0dXJlZC1jbG9uZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zaGFyZWQtbWVtb3J5LXN0cnVjdHVyZWQtY2xvbmUtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4NGRkYWYzNTMxZDNiMzZlYTFhZTQwZGIwNTFmOTY0ZjJh
MDAyNTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9z
aGFyZWQtbWVtb3J5LXN0cnVjdHVyZWQtY2xvbmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIg
QEAKK1Rlc3Qgc3RydWN0dXJlZCBjbG9uZSBwZXJtdXRhdGlvbnMgaW4gSW5kZXhlZERCIHdpdGgg
c2hhcmVkIG1lbW9yaWVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhl
ZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJ
bmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2luZGV4
ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIub3BlbihkYm5hbWUpCitzdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQorVGhpcyBpbmRleCBpcyBub3Qg
dXNlZCwgYnV0IGV2YWx1YXRpbmcga2V5IHBhdGggb24gZWFjaCBwdXQoKSBjYWxsIHdpbGwgZXhl
cmNpc2UgKGRlKXNlcmlhbGl6YXRpb246CitzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywg
J2R1bW15S2V5UGF0aCcpCisKK1J1bm5pbmcgdGVzdHMuLi4KK1Rlc3Qgc2hhcmVkIFdlYkFzc2Vt
Ymx5Lk1lbW9yeQordHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgJ3Jl
YWR3cml0ZScpCitzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQor
UEFTUyBzdG9yZS5wdXQobWVtb3J5LCAna2V5JykgdGhyZXcgZXhjZXB0aW9uIERhdGFDbG9uZUVy
cm9yOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9zaGFyZWQtbWVtb3J5LXN0cnVjdHVyZWQtY2xvbmUuaHRtbCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NoYXJlZC1tZW1vcnktc3RydWN0dXJlZC1jbG9u
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmIzZDMzMGVkMGY0MmIxYTIxZTVhNTk3YmY0N2VjM2ZhODM0ZTY4
MWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zaGFy
ZWQtbWVtb3J5LXN0cnVjdHVyZWQtY2xvbmUuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC1tZW1vcnktc3RydWN0dXJlZC1j
bG9uZS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhkODc2ZWU0ODg5YTAyNTZjNDMw
ZWE3MjAzMzU3OGE0NzdkOTI3ZWUuLjk5YjIyMzgwOGM5NWZkMGNmNzdmMWY4ZWExMWI4NTVmMDVl
MzI1ZmYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMTEtMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgV2ViQXNzZW1ibHkuTWVtb3J5
IHdpdGggc2hhcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTg2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHdhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLXNoYXJlZC5qczogQWRkZWQuCisg
ICAgICAgICh3YXNtRnJhbWVDb3VudEZyb21FcnJvcik6CisgICAgICAgICogd2FzbS9mdW5jdGlv
bi10ZXN0cy90cmFwLXN0b3JlLXNoYXJlZC5qczogQWRkZWQuCisgICAgICAgICogd2FzbS9qcy1h
cGkvdGVzdF9tZW1vcnkuanM6CisgICAgICAgIChiaW5hcnlTaG91bGROb3RQYXJzZSk6CisgICAg
ICAgICogd2FzbS9zdHJlc3Mvc2hhcmVkLW1lbW9yeS1lcnJvcnMuanM6IEFkZGVkLgorICAgICAg
ICAoYXNzZXJ0LnRocm93cyk6CisgICAgICAgICogd2FzbS9zdHJlc3Mvc2hhcmVkLXdhc20tbWVt
b3J5LWJ1ZmZlci5qczogQWRkZWQuCisKIDIwMjAtMTEtMTUgIFNlcmdleSBSdWJhbm92ICA8Y2hp
MTg3QGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBVcGRhdGUgd2FzbSBzcGVjIHRlc3RzCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLXNoYXJlZC5q
cyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLWxvYWQtc2hhcmVkLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ5ODkwYTdhYWQ1N2U2NDgyNGQxMTRiYjJhMzExODA2MzI0NDAxNmIKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLXNoYXJlZC5q
cwpAQCAtMCwwICsxLDM0IEBACitpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJwor
aW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcycKKworY29uc3QgcGFnZVNpemUg
PSA2NCAqIDEwMjQ7Citjb25zdCBudW1QYWdlcyA9IDEwOworCitjb25zdCBidWlsZGVyID0gKG5l
dyBCdWlsZGVyKCkpCisgICAgLlR5cGUoKS5FbmQoKQorICAgIC5JbXBvcnQoKQorICAgICAgICAu
TWVtb3J5KCJhIiwgImIiLCB7aW5pdGlhbDogbnVtUGFnZXN9KQorICAgIC5FbmQoKQorICAgIC5G
dW5jdGlvbigpLkVuZCgpCisgICAgLkV4cG9ydCgpLkZ1bmN0aW9uKCJmb28iKS5FbmQoKQorICAg
IC5Db2RlKCkKKyAgICAgICAgLkZ1bmN0aW9uKCJmb28iLCB7cGFyYW1zOiBbImkzMiJdLCByZXQ6
ICJpMzIifSkKKyAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgLkkzMkxvYWQo
MiwgMCkKKyAgICAgICAgICAgIC5SZXR1cm4oKQorICAgICAgICAuRW5kKCkKKyAgICAuRW5kKCk7
CisKK2NvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsKK2NvbnN0IG1vZHVs
ZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKK2NvbnN0IGZvbyA9IG5ldyBXZWJBc3Nl
bWJseS5JbnN0YW5jZShtb2R1bGUsIHthOiB7YjogbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5p
dGlhbDogbnVtUGFnZXMsIG1heGltdW06IG51bVBhZ2VzICogMiwgc2hhcmVkOiB0cnVlfSl9fSku
ZXhwb3J0cy5mb287CisKK2Z1bmN0aW9uIHdhc21GcmFtZUNvdW50RnJvbUVycm9yKGUpIHsKKyAg
ICBsZXQgc3RhY2tGcmFtZXMgPSBlLnN0YWNrLnNwbGl0KCJcbiIpLmZpbHRlcigocykgPT4gcy5p
bmRleE9mKCJ3YXNtLSIpICE9PSAtMSk7CisgICAgcmV0dXJuIHN0YWNrRnJhbWVzLmxlbmd0aDsK
K30KKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICBjb25zdCBlID0gYXNz
ZXJ0LnRocm93cygoKSA9PiBmb28obnVtUGFnZXMgKiBwYWdlU2l6ZSArIDEpLCBXZWJBc3NlbWJs
eS5SdW50aW1lRXJyb3IsICJPdXQgb2YgYm91bmRzIG1lbW9yeSBhY2Nlc3MiKTsKKyAgICBhc3Nl
cnQuZXEod2FzbUZyYW1lQ291bnRGcm9tRXJyb3IoZSksIDIpOworfQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtc3RvcmUtc2hhcmVkLmpzIGIvSlNUZXN0cy93
YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtc3RvcmUtc2hhcmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4Y2E5
YTg5NjM4MzkxYmYwNGVlZGNiYjZiN2QzZmM1NDFlODE0ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1zdG9yZS1zaGFyZWQuanMKQEAgLTAsMCAr
MSwyOSBAQAoraW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcycKK2ltcG9ydCAqIGFz
IGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnCisKK2NvbnN0IHBhZ2VTaXplID0gNjQgKiAxMDI0
OworY29uc3QgbnVtUGFnZXMgPSAxMDsKKworeworICAgIGNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1
aWxkZXIoKSkKKyAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAuSW1wb3J0KCkKKyAgICAg
ICAgICAgIC5NZW1vcnkoImEiLCAiYiIsIHtpbml0aWFsOiBudW1QYWdlc30pCisgICAgICAgIC5F
bmQoKQorICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAuRXhwb3J0KCkuRnVuY3Rp
b24oImZvbyIpLkVuZCgpCisgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigi
Zm9vIiwge3BhcmFtczogWyJpMzIiLCAiaTMyIl19KQorICAgICAgICAgICAgICAgIC5HZXRMb2Nh
bCgxKQorICAgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAgIC5JMzJT
dG9yZSgyLCAwKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgIC5FbmQoKTsKKworICAgIGNv
bnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsKKyAgICBjb25zdCBtb2R1bGUg
PSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7CisgICAgY29uc3QgZm9vID0gbmV3IFdlYkFz
c2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2E6IHtiOiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtp
bml0aWFsOiBudW1QYWdlcywgbWF4aW11bTogbnVtUGFnZXMgKiAyLCBzaGFyZWQ6IHRydWV9KX19
KS5leHBvcnRzLmZvbzsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykKKyAg
ICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBmb28oaSwgbnVtUGFnZXMgKiBwYWdlU2l6ZSArIDEp
LCBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IsICJPdXQgb2YgYm91bmRzIG1lbW9yeSBhY2Nlc3Mi
KTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9tZW1vcnkuanMgYi9K
U1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfbWVtb3J5LmpzCmluZGV4IDUyMDU5OTI3MGM1MGJkYzhl
YzJhNWUxYTUxOTVlMWNjY2IwOWM5NDguLjcwZWJkZTI4NjIzMmUxODFmNWVkY2M1MjlhZDIwZTRm
NmExNTA5MzUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9tZW1vcnkuanMK
KysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0X21lbW9yeS5qcwpAQCAtMTI0LDcgKzEyNCw3
IEBAIGZ1bmN0aW9uIGJpbmFyeVNob3VsZE5vdFBhcnNlKGJ1aWxkZXIpIHsKIAogewogICAgIGFz
c2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSgyMCksIFR5cGVFcnJvciwg
IldlYkFzc2VtYmx5Lk1lbW9yeSBleHBlY3RzIGl0cyBmaXJzdCBhcmd1bWVudCB0byBiZSBhbiBv
YmplY3QiKTsgCi0gICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5
KHt9LCB7fSksIFR5cGVFcnJvciwgICJXZWJBc3NlbWJseS5NZW1vcnkgZXhwZWN0cyBleGFjdGx5
IG9uZSBhcmd1bWVudCIpOworICAgIG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6MX0s
IHt9KTsKIH0KIAogZnVuY3Rpb24gdGVzdChmKSB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20v
c3RyZXNzL3NoYXJlZC1tZW1vcnktZXJyb3JzLmpzIGIvSlNUZXN0cy93YXNtL3N0cmVzcy9zaGFy
ZWQtbWVtb3J5LWVycm9ycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjRiZmZiNzNlYTkwOGE4NzliMDQ4N2Jj
Yjc3NzlmOWY3MTczNDBmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL3N0cmVzcy9z
aGFyZWQtbWVtb3J5LWVycm9ycy5qcwpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgKiBhcyBhc3Nl
cnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKKworYXNzZXJ0LnRocm93cygoKSA9PiB7CisgICAgbmV3
IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDEsIHNoYXJlZDogdHJ1ZSB9KTsKK30sIFR5
cGVFcnJvciwgYCdtYXhpbXVtJyBwYWdlIGNvdW50IG11c3QgYmUgZGVmaW5lZCBpZiAnc2hhcmVk
JyBpcyB0cnVlYCk7CisKK2Fzc2VydC50aHJvd3MoKCkgPT4geworICAgIGxldCBtZW1vcnkgPSBu
ZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogMSwgbWF4aW11bTogMiwgc2hhcmVkOiB0
cnVlIH0pOworICAgIG1lbW9yeS5ncm93KDMpOworfSwgUmFuZ2VFcnJvciwgYFdlYkFzc2VtYmx5
Lk1lbW9yeS5ncm93IHdvdWxkIGV4Y2VlZCB0aGUgbWVtb3J5J3MgZGVjbGFyZWQgbWF4aW11bSBz
aXplYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vc3RyZXNzL3NoYXJlZC13YXNtLW1lbW9y
eS1idWZmZXIuanMgYi9KU1Rlc3RzL3dhc20vc3RyZXNzL3NoYXJlZC13YXNtLW1lbW9yeS1idWZm
ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDg5NjEzYzkwOTI1NTcwNDU2ZTk1MDg0NTFlNWUxYzAzZGUxNmVj
MgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9zdHJlc3Mvc2hhcmVkLXdhc20tbWVt
b3J5LWJ1ZmZlci5qcwpAQCAtMCwwICsxLDI0IEBACitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAn
Li4vYXNzZXJ0LmpzJworCitsZXQgcGFnZVNpemUgPSA2NCA8PCAxMDsKK2xldCBtZW1vcnkgPSBu
ZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsKKyAgICBpbml0aWFsOiAxLAorICAgIG1heGltdW06IDUs
CisgICAgc2hhcmVkOiB0cnVlLAorfSk7CitsZXQgYnVmZmVyMSA9IG1lbW9yeS5idWZmZXI7Cith
c3NlcnQuZXEoYnVmZmVyMS5ieXRlTGVuZ3RoLCBwYWdlU2l6ZSAqIDEpOworYXNzZXJ0LmVxKGJ1
ZmZlcjEsIG1lbW9yeS5idWZmZXIpOworCittZW1vcnkuZ3JvdygxKTsKK2xldCBidWZmZXIyID0g
bWVtb3J5LmJ1ZmZlcjsKK2Fzc2VydC5lcShidWZmZXIxLmJ5dGVMZW5ndGgsIHBhZ2VTaXplICog
MSk7Cithc3NlcnQuZXEoYnVmZmVyMi5ieXRlTGVuZ3RoLCBwYWdlU2l6ZSAqIDIpOworYXNzZXJ0
LmZhbHN5KGJ1ZmZlcjEgPT09IGJ1ZmZlcjIpOworCitsZXQgYnl0ZXMxID0gbmV3IFVpbnQ4QXJy
YXkoYnVmZmVyMSk7CitsZXQgYnl0ZXMyID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyMik7CitieXRl
czFbMF0gPSA0MjsKK2Fzc2VydC5lcShieXRlczJbMF0sIDQyKTsKK2J5dGVzMlswXSA9IDQzOwor
YXNzZXJ0LmVxKGJ5dGVzMVswXSwgNDMpOwo=
</data>
<flag name="review"
          id="431126"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>